替换列表python中的特殊字符

时间:2017-02-07 16:21:22

标签: python list replace

我想将':'' ''-''('')'替换为此列表中的项目的下划线:

columns = ['Region', 'Cat', 'Bld', 'Fbld', 'Ht(m)', 'H:W', 'Fperv', 'Froof', 'wall type', 'roof type', 'road-type', 'Tmn', 'Tmx', 'Notes']

那样:

columns = ['Region', 'Cat', 'Bld', 'Fbld', 'Ht_m', 'H_W', 'Fperv', 'Froof', 'wall_type', 'roof_type', 'road_type', 'Tmn', 'Tmx', 'Notes']

目标是替换所有特殊字符和空格,以便可以将其读入sql表。谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

由于您提供了特殊字符列表,您可以:

  • 使用dict comprehension创建翻译表
  • 将翻译应用于列表中的元素

代码:

orig_list = ['Region', 'Cat', 'Bld', 'Fbld', 'Ht(m)', 'H:W', 'Fperv', 'Froof', 'wall type', 'roof type', 'road-type', 'Tmn', 'Tmx', 'Notes']

d = {ord(x):"_" for x in ":-() "}
new_list = [x.translate(d) for x in orig_list]

print(new_list)

结果:

['Region', 'Cat', 'Bld', 'Fbld', 'Ht_m_', 'H_W', 'Fperv', 'Froof', 'wall type', 'roof type', 'road_type', 'Tmn', 'Tmx', 'Notes']

经典的正则表达式解决方案作为替代方案:

import re
new_list = [re.sub("[:\-() ]","_",x) for x in orig_list]