Python 检查word是否适合字典中的键,如果该键不存在,则将其值写入另一个文件中

Python 检查word是否适合字典中的键,如果该键不存在,则将其值写入另一个文件中,python,Python,我希望脚本从某个文件中搜索shortkey=here中的关键字,然后检查字典中是否存在此类单词,如果存在,则获取值​从字典里找出那个词,并把它写进新的文件里。出于某种原因,​ 我下面的代码不工作 另外,如何检查这些值是否没有重复?i、 e如果已经在newfile.txt中编写了Goodworning,那么不要第二次重写它 keyword = { "shortkey":"longer sentence", "gm":"goodmorning", "etc":"e

我希望脚本从某个文件中搜索shortkey=here中的关键字,然后检查字典中是否存在此类单词,如果存在,则获取值​从字典里找出那个词,并把它写进新的文件里。出于某种原因,​ 我下面的代码不工作

另外,如何检查这些值是否没有重复?i、 e如果已经在newfile.txt中编写了Goodworning,那么不要第二次重写它

keyword = {
      "shortkey":"longer sentence",
      "gm":"goodmorning",
      "etc":"etcetera"
}

with open('file.txt', 'r') as file:
   with open('newfile.txt', 'a') as newfile:
      lines = file.readlines()
      for line in lines:
         if 'shortkey="' in line:
            x = line.split('"')[1].split()
            if x == keyword.keys():
               for x, replacement in keyword.items():
                 newfile.write(replacement)
file.txt中的文本:

newfile.txt中的预期输出:


当我第n次运行代码时,它不应该再次重写所有这些值,因为它们已经在文件中了。

文件中的第一个示例行在拆分后将产生['gm'、'gm'、'gm'、'etc'、'shortkey'、'novalue']。这不等于keyword.keys,原因如下:

gm在单词列表中重复了几次,但在dict中只出现一次。您可以通过将比较的两侧包装在一个集合中以删除重复值来解决此问题。 novalue在单词列表中,但不在dict中。 单词列表很可能与dict键的顺序不同。同样,您可以使用set来解决这个问题,因为集合是无序的。 你来这里的目的是什么

仅处理每个单词都是dict键且每个dict键都在该行中的行。 仅处理每个单词都是dict键的行。如果dict有额外的未使用键,则可以。 只处理包含所有dict键的行。如果该行有非dict键的额外单词,则可以。 处理所有行,如果可以替换,则替换单词,否则使用原始单词。
文件中的第一个示例行在拆分后将生成['gm'、'gm'、'gm'、'etc'、'shortkey'、'novalue']。这不等于keyword.keys,原因如下:

gm在单词列表中重复了几次,但在dict中只出现一次。您可以通过将比较的两侧包装在一个集合中以删除重复值来解决此问题。 novalue在单词列表中,但不在dict中。 单词列表很可能与dict键的顺序不同。同样,您可以使用set来解决这个问题,因为集合是无序的。 你来这里的目的是什么

仅处理每个单词都是dict键且每个dict键都在该行中的行。 仅处理每个单词都是dict键的行。如果dict有额外的未使用键,则可以。 只处理包含所有dict键的行。如果该行有非dict键的额外单词,则可以。 处理所有行,如果可以替换,则替换单词,否则使用原始单词。 OrderedDict允许您维护订单,而set则不允许。将密钥写入新文件后,可以将密钥值设置为空字符串,以避免重新写入

从集合导入订单 关键字={ 短键:更长的句子, 总经理:早上好, 等等 } 打开'file.txt','r'作为文件: 打开'newfile.txt','a'作为新文件: lines=file.readlines 对于行中的行: 如果行中的'shortkey=' to_replace=行。拆分“”[1]。拆分 to_replace=OrderedDict.fromKeyto_replace 对于要替换的密钥,请执行以下操作: 如果输入关键字: newfile.writekeyword[key]+'' 关键字[键]= OrderedDict允许您维护订单,而set则不允许。将密钥写入新文件后,可以将密钥值设置为空字符串,以避免重新写入

从集合导入订单 关键字={ 短键:更长的句子, 总经理:早上好, 等等 } 打开'file.txt','r'作为文件: 打开'newfile.txt','a'作为新文件: lines=file.readlines 对于行中的行: 如果行中的'shortkey=' to_replace=行。拆分“”[1]。拆分 to_replace=OrderedDict.fromKeyto_replace 对于要替换的密钥,请执行以下操作: 如果输入关键字: newfile.writekeyword[key]+'' 关键字[键]=
@约翰戈登:是的。无论如何,我认为我的代码与文件无关是的,我意识到我的错误并删除了我的评论。@JohnGordon确实如此。无论如何,我认为我的代码与文件无关是的,我意识到我的错误并删除了我的评论。
shortkey="gm gm gm etc shortkey novalue"
shortkey="gm"
goodmorning etcetera longer sentence