[英]I can't understand what's wrong - Python multiple text replace dictionary
我不明白发生了什么。 我正在尝试使此脚本使用成对列表替换多个文本文件,但只有第一对有效,其他未处理。 我在循环中犯了什么错误吗?
replacements = [
('Dog', 'Cat'),
('Lazy', 'Smart'),
('Fat', 'Slim'),
]
import re
import sys
if __name__ == "__main__":
if len(sys.argv) < 2 or len(sys.argv) > 4:
print("Invalid argument(s)")
exit()
with open(sys.argv[1], "r") as f:
print(f"Reading {sys.argv[1]}")
new_lines = ""
for old, new in replacements:
for l in f:
new_lines += re.sub(old, new, l)
with open(sys.argv[2] or sys.argv[1], "w") as f:
print(f"Writing into '{sys.argv[2] or sys.argv[1]}'")
f.write(new_lines)
双 for 循环导致了这个问题。 仅读取文件内容一次即可解决此问题。
replacements = [
('Dog', 'Cat'),
('Lazy', 'Smart'),
('Fat', 'Slim'),
]
import re
import sys
if __name__ == "__main__":
if len(sys.argv) < 2 or len(sys.argv) > 4:
print("Invalid argument(s)")
exit()
with open(sys.argv[1], "r") as f:
print(f"Reading {sys.argv[1]}")
new_lines = f.read()
for old, new in replacements:
new_lines = re.sub(old, new, new_lines)
with open(sys.argv[2] or sys.argv[1], "w") as f:
print(f"Writing into '{sys.argv[2] or sys.argv[1]}'")
f.write(new_lines)
对于第一个替换对,文件将只被读取一次,然后它将被耗尽,因为文件的所有元素都已被读取一次。
因此,对于下一次替换,将不会读取对文件内容。 这就是为什么它只适用于Dog
和Cat
对,而不适用于 rest。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.