我有以下代码:
numbers = foo.replace('one', '1').replace('two', '2').replace('three', '3')
这是一个更大的项目的一部分,它采用列表,将单词更改为数字并将它们写入CSV文件中的一列。我的问题是,是否有办法缩短上面的链接方法。这里的循环是否合适?
答案 0 :(得分:6)
你可以使用这样的东西
replacements = [('one', '1'), ('two', '2'), ('three', '3'), ...]
numbers = foo
for item in replacements:
numbers = numbers.replace(*item)
然而,它产生了许多临时字符串(与链式替换方法一样)
您可能还会发现您对“#34; phone"
等字词有不受欢迎的替换如果可能,您应该将foo分成单词列表。然后从字典中查找替换
replace_dict = dict(one=1, two=2, three=3)
foo_list = foo.split(' ')
foo = ' '.join(replace_dict.get(k, k) for k in foo_list)