如何搜索字典中的字典键并将其替换为值

问题描述:

我有一个由CSV阅读器创建的字典,其中列A具有原始名称,列B具有更新的名称。如何搜索字典中的字典键并将其替换为值

dict[key] = {value} 

我从数据库中选择一个值,目标是使用键搜索该字符串并将其替换为值。

它最终将通过UPDATE语句更新。但重要的是检查完成,如果字符串不包含任何'key'实例并具有'value',那么它会从更新中跳过而不传递给dict。

什么是搜索字符串的最佳方式?因为它正在做重复的替换。我想在整个字符串中“匹配案例”。

name = 'de testing  nl testing  es testing_updated  en testing_updated  it testing  fr testing_updated' 
dict["testing"] = {"testing_updated"} 
for key,value in dict.items(): 
    if str(key) not in name and list(value)[0] in name: 
     print("{} has already been replaced with {}".format(key,value)) 
    else: 
     name = name.replace(str(key),list(value)[0]) 
     print(name) 

输出:

de testing_updated  nl testing_updated  es testing_updated_updated  en testing_updated_updated  it testing_updated  fr testing_updated_updated 

如果检查通过和名称正确更新(这是不是),最终它传递到一个新的字典,然后字典用于编译SQL UPDATE语句。

如果将"testing"替换为"testing_updated",则结果字符串仍包含字符串"testing",因此您的检查无法识别它已更新。

您可以使用诸如"testing ""testing_updated "之类的东西来代替尾部空格或制表符,但根据您的实际数据,这可能不适用于任何情况。

如果我正确理解你,你有一个字符串包含更新和未更新的元素。在这种情况下,您应该首先使用str.split将字符串拆分为包含元素,然后单独处理元素。

说明,你有更换说明列表以CSV: 1 A B 2 B C ....

如果你有一个字符串“AB”和应用搜索/替换顺序,您的字符串结束行动是“CC”,而不是“公元前”。

有两种方法来解决办法:

  1. 做所有的搜索,然后所有的内容替换。这是相当棘手的实施,因为你不得不削减你的输入​​字符串成片
  2. 修改您的指示,引进关键不存在输入字符串: 1 A DISTINGUISH_A 2 B DISTINGUISH_B .... .... 11 DISTINGUISH_A B 12 DISTINGUISH_B C

方式2,因为主回路确实很有趣不改变:搜索和替换的顺序。而且,准备修改后的说明也可以自动完成。

+0

我的csv不像您所描述的那样是替代品。 这是old_text,new_text对。 像: 磁带,磁带 狗,猫 它不会是: 磁带,磁带 胶带,duct_tape – oj43085

+0

@ oj43085忘记行号和我们说的一样;你明白了吗? – Setop