如何在Python中从串行文件捕获字符和换行符并打印到文件

如何在Python中从串行文件捕获字符和换行符并打印到文件,python,Python,我试图在python脚本中捕获串行数据。流以“#”结尾,流可以包含字母、数字、许多其他特殊字符和新行。我想捕获所有角色,并在完成后将其放入文件中。然而,我不确定我的re是否正确。是 re.match(“[A-Za-z0-9,.$:&*=-]”,char,re.DOTALL) 是否要捕获所有字母、数字和,.$:&*=-字符以及换行符?我可以简单地添加遇到的每个字符,将其放入列表中,然后将列表写入文件,如下所示: while 1: # must handle 'exceptions' - IE

我试图在python脚本中捕获串行数据。流以“#”结尾,流可以包含字母、数字、许多其他特殊字符和新行。我想捕获所有角色,并在完成后将其放入文件中。然而,我不确定我的re是否正确。是

re.match(“[A-Za-z0-9,.$:&*=-]”,char,re.DOTALL)

是否要捕获所有字母、数字和
,.$:&*=-
字符以及换行符?我可以简单地添加遇到的每个字符,将其放入列表中,然后将列表写入文件,如下所示:

while 1:
   # must handle 'exceptions' - IE blank data....
   try:
      if s.inWaiting():
         val = s.read(s.inWaiting())
         for char in val:
            if re.match("[A-Za-z0-9,.$:<>&=-]", char, re.DOTALL):
               chunk += char
               print char

            # handle end of stream
            #if char is '#':
            if re.match("#", char):
               f = open('./report', 'w')
               f.write(chunk)
               sys.exit()
而1:
#必须处理“异常”-即空白数据。。。。
尝试:
如果s.inWaiting():
val=s.read(s.inWaiting())
对于val中的字符:
如果重新匹配(“[A-Za-z0-9,.$:&=-]”,char,re.DOTALL):
chunk+=char
打印字符
#处理流的末尾
#如果char为“#”:
如果重新匹配(“#”,字符):
f=打开(“./报告”,“w”)
f、 写入(块)
sys.exit()

目前它正在抓取我所期望的所有内容,但似乎没有抓取新行,因为生成的文件不包含任何…

即使您正在使用
re.DOTALL
,您的正则表达式实际上也没有使用点运算符。将第7行更改为以下内容应该可以正常工作:

if re.match("[A-Za-z0-9,.$:<>&=-]|\n", char):
如果重新匹配(“[A-Za-z0-9,.$:&=-]|\n”,字符):
适用于基于*nix和基于PC的换行编码,因为正则表达式将忽略
\r