Python-如果字典键在打印值行中
我试图检查我的一个文件的行中是否有字典的键,如果是这样,我想用它们的值替换它们。 这是我的密码:Python-如果字典键在打印值行中,python,list,dictionary,replace,Python,List,Dictionary,Replace,我试图检查我的一个文件的行中是否有字典的键,如果是这样,我想用它们的值替换它们。 这是我的密码: import sys file1 = sys.argv[1] dictionary = {key1 : value1 , key2 : value2 , ecc...} with open (file) as f: for line in f: if any(e in line for e in dictionary.keys()): print(l
import sys
file1 = sys.argv[1]
dictionary = {key1 : value1 , key2 : value2 , ecc...}
with open (file) as f:
for line in f:
if any(e in line for e in dictionary.keys()):
print(line.replace(e,dictionary[e]))
看起来你要做的事情是这样的:
with open(file) as f:
for line in f:
for k,v in dictionary.items():
line = line.replace(k, v)
print(line)
也就是说,对于字典中的每个键/值,将该键在行中出现的情况替换为关联的值
或者,您可以一次性读取整个文件,然后对整个文件运行替换:
with open(file) as f:
data = f.read()
for k,v in dictionary.items():
data = data.replace(k, v)
print(data)
如果您使用的是Python 2,那么应该使用而不是。看起来您尝试做的事情是这样的:
with open(file) as f:
for line in f:
for k,v in dictionary.items():
line = line.replace(k, v)
print(line)
也就是说,对于字典中的每个键/值,将该键在行中出现的情况替换为关联的值
或者,您可以一次性读取整个文件,然后对整个文件运行替换:
with open(file) as f:
data = f.read()
for k,v in dictionary.items():
data = data.replace(k, v)
print(data)
如果您使用的是Python 2,则应使用而不是。请提供一个示例,说明文件中的几行内容是什么输入?实际产量是多少?所需的输出是什么?您是要检查整行是否是字典键,还是形式为“foo bar…key1…”的行,并尝试匹配每个空格分隔的单词?什么是
e
?匹配的第一个键?请提供一个示例,说明文件中的两行可能是什么样子的输入是什么?实际产量是多少?所需的输出是什么?您是要检查整行是否是字典键,还是形式为“foo bar…key1…”的行,并尝试匹配每个空格分隔的单词?什么是e
?第一个匹配的密钥?谢谢,您的解决方案工作得很好,但是对于最大的数据集,它给我带来了一些问题。举例说明:我的字典有13999个键,我的文件有840005行。你有没有办法加快脚本的速度?你可以一次完成整个文件内容的替换(请参见我的编辑)。除此之外,我不知道。谢谢,你的解决方案非常有效,但是给我带来了一些关于最大数据集的问题。举例说明:我的字典有13999个键,我的文件有840005行。你有没有办法加快脚本的速度?你可以一次完成整个文件内容的替换(请参见我的编辑)。除此之外,我不知道。