Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-如果字典键在打印值行中_Python_List_Dictionary_Replace - Fatal编程技术网

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行。你有没有办法加快脚本的速度?你可以一次完成整个文件内容的替换(请参见我的编辑)。除此之外,我不知道。