我试图逐行读取文件。如果在字典中找到,我想用值替换键,并将内容写入新文件。这是逻辑:
fout = open(output_file,"w+")
with open(input_file, 'r') as fin:
for line in fin:
for key in sorted(Db):
if re.match(key,line):
line = re.sub(key,Db[key],line) ## line 246
fout.write(line)
break
else:
fout.write(line)
每当我尝试运行此文件时,我都会收到以下回溯:
Traceback (most recent call last):
File "final.py", line 246, in <module>
if re.match(key,line):
File "c:\Python33\lib\re.py", line 156, in match
return _compile(pattern, flags).match(string)
File "c:\Python33\lib\functools.py", line 258, in wrapper
result = user_function(*args, **kwds)
File "c:\Python33\lib\re.py", line 274, in _compile
return sre_compile.compile(pattern, flags)
File "c:\Python33\lib\sre_compile.py", line 493, in compile
p = sre_parse.parse(p, flags)
File "c:\Python33\lib\sre_parse.py", line 724, in parse
p = _parse_sub(source, pattern, 0)
File "c:\Python33\lib\sre_parse.py", line 347, in _parse_sub
itemsappend(_parse(source, state))
File "c:\Python33\lib\sre_parse.py", line 552, in _parse
raise error("nothing to repeat")
sre_constants.error: nothing to repeat
如果我遗失了什么,请告诉我。提前谢谢。
谢谢, 阿南德
答案 0 :(得分:4)
我认为您应该自己尝试调试此问题。这就是我要做的。 在第246行:
之前在脚本中添加print语句print key,
print Db[key]
print line
根据输出,采取措施。 要测试可行的方法,可以使用python解释器。 假设你没有上面的印刷品:
键
FOO
关键123
你可以测试一下:
line = 'key 123'
re.sub('key', 'foo', line)
'foo 123'
在这种情况下,它有效。我相信你很快就会发现问题所在。祝你好运!