我正在清理存储在单独文本文件中的报纸文章。
在其中一个清洁阶段,我想删除分隔符后面的一个文件中的所有文本' LOAD-DATE:'。我使用一小段代码,只应用于一个字符串。见下文。
line = 'A little bit of text. LOAD-DATE: And some redundant text'
import re
m = re.match('(.*LOAD-DATE:)', line)
if m:
line = m.group(1)
line = re.sub('LOAD-DATE:', '', line)
print(line)
一点点文字。
但是,当我将代码转换为循环来清理一大堆单独的文本文件(在脚本的其他阶段工作正常)时,它会生成巨大的,相同的文本文件,这些文件看起来不太好看完全像报纸的原始文章。请参阅循环:
files = glob.glob("*.txt")
for f in files:
with open(f, "r") as fin:
try:
import re
m = re.match('(.*LOAD-DATE:)', fin)
if m:
data = m.group(1)
data = re.sub('LOAD-DATE:', '', data)
except:
pass
with open(f, 'w') as fout:
fout.writelines(data)
循环中显然出现了问题,但我不知道是什么。
答案 0 :(得分:1)
尝试逐行浏览文件。像
这样的东西import re
files = glob.glob("*.txt")
for f in files:
with open(f, "r") as fin:
data = []
for line in fin:
m = re.match('(.*LOAD-DATE:)', line)
if m:
line = m.group(1)
line = re.sub('LOAD-DATE:', '', line)
data.append(line)
with open(f, 'w') as fout:
fout.writelines(data)
答案 1 :(得分:0)
我制作了10个包含字符串的txt文件:
m
我更改了 m = re.match('(.*LOAD-DATE:)', fin.read())
变量,因为patrick建议允许打开并阅读该文件。
writelines
但我也发现我必须在if语句中加入 if m:
data = m.group(1)
data = re.sub('LOAD-DATE:', '', data)
with open(f, 'w') as fout:
fout.writelines(data)
$ & 'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe'
它很快就改变了它们。
我希望这会有所帮助。