将整个正则表达式组导出到文本文件

时间:2011-04-25 11:32:51

标签: python regex export text-files regex-group

当我打印“打印(a)”组时,会显示整个组。当我将其保存到文本文件“open(”sirs1.txt“,”w“)时。写(a)”只将最后一行保存到文件中。

import re

def main():
f = open('sirs.txt')
for lines in f:
    match = re.search('(AA|BB|CC|DD)......', lines)
    if match:
        a = match.group()
        print(a)
        open("sirs1.txt", "w").write(a)

如何将整个组保存到文本文件中。

3 个答案:

答案 0 :(得分:2)

nosklo是正确的,主要问题是每次写入时都要覆盖整个文件。 mehmattski也是正确的,你还需要在每次写入时明确地添加\ n,以使输出文件可读。

试试这个:

enter code here

import re

def main():
  f = open('sirs.txt') 
  outputfile = open('sirs1.txt','w')

  for lines in f:
    match = re.search('(AA|BB|CC|DD)......', lines)
    if match:
      a = match.group()
      print(a)
      outputfile.write(a+"\n")

  f.close()
  outputfile.close()

答案 1 :(得分:1)

open命令会创建一个新文件,因此您每次都要创建一个新文件。

尝试在for-loop

之外创建文件
import re
def main():
    with open('sirs.txt') as f:
        with open("sirs1.txt", "w") as fw:
            for lines in f:
                match = re.search('(AA|BB|CC|DD)......', lines)
                if match:
                    a = match.group()
                    print(a)
                    fw.write(a)

答案 2 :(得分:0)

您需要在每个字符串后面添加换行符,以便在不同的行上打印:

import re

def main():
   f = open('sirs.txt')
   outputfile = open('sirs1.txt','w')
   for lines in f:
      match = re.search('(AA|BB|CC|DD)......', lines)
      if match:
          a = match.group()
          print(a)
          outputfile.write(a+'/n')
   f.close()
   outputfile.close()