如何搜索字典中的字典键并将其替换为值
问题描述:
我有一个由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 A DISTINGUISH_A 2 B DISTINGUISH_B .... .... 11 DISTINGUISH_A B 12 DISTINGUISH_B C
方式2,因为主回路确实很有趣不改变:搜索和替换的顺序。而且,准备修改后的说明也可以自动完成。
我的csv不像您所描述的那样是替代品。 这是old_text,new_text对。 像: 磁带,磁带 狗,猫 它不会是: 磁带,磁带 胶带,duct_tape – oj43085
@ oj43085忘记行号和我们说的一样;你明白了吗? – Setop