我试图通过读取每一行来替换文本文件中的文本,对其进行测试,然后在需要更新时进行编写。我不想保存为新文件,因为我的脚本已经先备份文件并在备份上运行。如何按行替换(更新)文件中的文本
这里是我迄今为止...我从os.walk(获得fpath),我保证pathmatch VAR正确返回:
fpath = os.path.join(thisdir, filename)
with open(fpath, 'r+') as f:
for line in f.readlines():
if '<a href="' in line:
for test in filelist:
pathmatch = file_match(line, test)
if pathmatch is not None:
repstring = filelist[test] + pathmatch
print 'old line:', line
line = line.replace(test, repstring)
print 'new line:', line
f.write(line)
但是最终情况是,我只得到几行(正确更新,介意你,但从文件中的前一个重复)更正。我认为这是一个范围界定问题,缺点。
*另外:我想知道如何只替换匹配的第一个实例上的文本,例如,我不想匹配显示文本,只有基础href。
你有没有考虑简单地使用`sed`呢? – Amber 2011-01-24 04:41:24
http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 – 2011-01-24 04:44:12
@Amber:以某种方式。我真的想完成这个并在稍后学习sed。我几乎完成了这个... :) – jml 2011-01-24 04:44:17