缩短Python变量中的方法链

时间:2015-03-12 05:17:32

标签: python

我有以下代码:

numbers = foo.replace('one', '1').replace('two', '2').replace('three', '3')

这是一个更大的项目的一部分,它采用列表,将单词更改为数字并将它们写入CSV文件中的一列。我的问题是,是否有办法缩短上面的链接方法。这里的循环是否合适?

1 个答案:

答案 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)