【问题标题】:Python open text file, do multiline regular expressions, write out filePython打开文本文件,做多行正则表达式,写出文件
【发布时间】:2015-08-25 09:21:51
【问题描述】:

我在 90 年代花了数年时间在 Perl 上做正则表达式,但从那以后就离开了 IT 领域,并且是一名 Python 新手。我需要哪些语法包装器才能在 Python 中完成这项工作?这就是我现在所处的位置,结果是计算机什么都不做,就是这样。:

import os
import re
os.chdir("/Users/.../")
atext = open("textfile.txt", 'r').read()
atext = re.sub(r'foo', r'bar', atext.rstrip())
print atext

【问题讨论】:

  • 那么你的代码有什么问题?
  • 也许提供一些(简短的)示例输入 - 并解释您期望的输出是什么

标签: python regex output multiline


【解决方案1】:

您的问题是.read() 不会读取整个文件,它会按给定大小(以字节为单位)读取文件:https://docs.python.org/2/tutorial/inputoutput.html#methods-of-file-objects

你真正需要的是逐行读取你的文件,你可以使用atext.readlines(),它会在一个列表中返回你的整个文件行,或者使用这个实际上比.readlines()更快的代码

import os
import re
os.chdir("/Users/.../")
with open("textfile.txt", 'r') as atext:
    for line in atext:
        line = re.sub(r'foo', r'bar', line.rstrip())
        print line

【讨论】:

  • 谢谢。这让我更接近了,其他人给了我这个答案,成功了:

    import re<br> INPUT = 'in.txt'<br> OUTPUT = 'out.txt'<br> <br> with open(INPUT, 'r') as input_file:<br> data = input_file.read().strip()<br> <br> data = re.sub(r'a', r'b', data)<br><br> # more replacements go here<br> with open(OUTPUT, 'w') as output_file:<br> output_file.write(data)<br>
猜你喜欢
  • 1970-01-01
  • 2013-08-13
  • 1970-01-01
  • 2019-01-01
  • 1970-01-01
  • 2019-03-18
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
相关资源
最近更新 更多