字符串替换 - 避免重复

时间:2014-04-08 05:47:31

标签: python string

我正在合并一些有关全球200多个国家的数据集。在清理数据时,我需要将每个国家/地区的三个字母代码转换为国家/地区的全名。

三个字母的代码和国家/地区全名来自单独的CSV文件,该文件显示的国家/地区略有不同。

我的问题是:有更好的方式来写这个吗?

str.replace("USA", "United States of America")
str.replace("CAN", "Canada")
str.replace("BHM", "Bahamas")
str.replace("CUB", "Cuba")
str.replace("HAI", "Haiti")
str.replace("DOM", "Dominican Republic")
str.replace("JAM", "Jamaica")

等等。它继续另外200行。谢谢!

3 个答案:

答案 0 :(得分:1)

由于替换次数很多,我会迭代字符串中的单词并根据字典查找进行替换。

mapofcodes = {'USA': 'United States of America', ....}
for word in mystring.split():
    finalstr += mapofcodes.get(word, word)

答案 1 :(得分:0)

尝试将CS​​V文件读入字典中的二维数组,然后您可以访问所需的文件。

如果我理解你的问题,那就是。

答案 2 :(得分:0)

这是一个正则表达式解决方案:

import re

COUNTRIES = {'USA': 'United States of America', 'CAN': 'Canada'}

def repl(m):
    country_code = m.group(1)
    return COUNTRIES.get(country_code, country_code)

p = re.compile(r'([A-Z]{3})')
my_string = p.sub(repl, my_string)