【发布时间】:2017-09-19 21:47:17
【问题描述】:
我正在清理存储在单独文本文件中的报纸文章。
在其中一个清理阶段,我想删除分隔符“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)
循环中显然出了点问题,但我不知道是什么。
【问题讨论】:
-
你能生成保存数据的示例输出吗?
-
这里发生了很多事情,但请注意,您实际上从未阅读过打开的文件:
m = re.match('(.*LOAD-DATE:)', fin)-->m = re.match('(.*LOAD-DATE:)', fin.read())