【问题标题】:Run multiple different re.subs against single file in python在 python 中针对单个文件运行多个不同的 re.subs
【发布时间】:2015-10-20 20:58:20
【问题描述】:

所以我有一个我的服务器生成的文件,我正在尝试清理它并删除行中不必要的额外和不同字符,行的开头和结尾。我卡住的地方是我必须在每个 re.sub 之后创建一个新文件,然后删除旧文件。我现在有大约 10 个 re.sub,我觉得创建和删除文件效率低下。

def linecleanup():

    file_in = open('Server.txt', 'r')
    file_out = open ("Server.txt1", "w")
    lines = file_in.read()
    regex = re.sub("\s\s\s\s\<revision>", "Revision: ", lines)
    file_out.write(regex)
    file_in.close
    file_out.close

   os.remove('Server.txt')

linecleanup()

def linecleanup1():

    file_in = open('Server.txt1', 'r')
    file_out = open ("Server.txt2", "w")
    lines = file_in.read()
    regex = re.sub("</version>", " ", lines)
    file_out.write(regex)
    file_in.close
    file_out.close

    os.remove('Server.txt1')

linecleanup1()

def linecleanup2():

    file_in = open('Server.txt2', 'r')
    file_out = open ("Server.txt3", "w")
    lines = file_in.read()
    regex = re.sub("</revision>", " " + '\n', lines)
    file_out.write(regex)
    file_in.close
    file_out.close

    os.remove('Server.txt2')

linecleanup2()

【问题讨论】:

  • 无关:您忘记在文件上调用 close。代码应该是file_in.close(),而不是file_in.close
  • 放代码的时候忘记加了。不过很好。

标签: python regex python-2.7


【解决方案1】:

此代码未经测试,但您可以执行以下操作:

def linecleanup():

    with open("Server.txt1", 'r') as file_in:
        lines = file_in.read()        

    lines = re.sub("\s\s\s\s\<revision>", "Revision: ", lines)
    # Where a simple find&replace (non-regex) is required, you could just use this instead:
    # lines = lines.replace("</version>"," ")
    lines = re.sub("</version>", " ", lines)  
    lines = re.sub("</revision>", " " + '\n', lines)    

    with open("Server.txt3", "w") as outp:
        outp.write(lines)

linecleanup()        

【讨论】:

  • 完美运行。谢谢!
猜你喜欢
  • 2012-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多