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

时间:2012-12-14 07:59:52

标签: python

我正在尝试捕获python脚本中串行数据。流以“#”结尾,流可以包含字母,数字,许多其他特殊字符和新行。我想捕获所有字符并在完成后将它们放在一个文件中。但是,我不确定我的答案是否正确。是

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 个答案:

答案 0 :(得分:1)

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

if re.match("[A-Za-z0-9,.$:<>&=-]|\n", char):

适用于基于* nix和基于PC的换行编码,\r只会被正则表达式忽略。