如何将str.replace()与替换字典一起使用?蟒蛇

alv*_*vas 1 python regex string replace

给出替换字典,其中key = to be replacedvalue = replacements,例如:

replacements = {u'\u2014':'-', u'\u2019':"'", u'\u2018':"'", u'\u201d':'"', u'\u201c':'"'}
Run Code Online (Sandbox Code Playgroud)

如何在不迭代的情况下执行替换replacements.keys()

如何使用正则表达式进行相同的操作re.sub()

我一直在这样做:

for r in replacements:
  sentence = sentence.replace(r,replacements[r])
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 5

你正在寻找unicode.translate().它需要一个unicode 序数(整数)的映射,值也应该是序数,或unicode字符串,或发None信号删除该字符:

replacements = {ord(k): ord(v) for k, v in replacements.iteritems()}
sentence = sentence.translate(replacements)
Run Code Online (Sandbox Code Playgroud)

演示:

>>> replacements = {ord(k): ord(v) for k, v in replacements.iteritems()}
>>> replacements
{8216: 39, 8217: 39, 8212: 45, 8221: 34, 8220: 34}
>>> u'\u2019Hello world! \u2014 You rock!\u2018'.translate(replacements)
u"'Hello world! - You rock!'"
Run Code Online (Sandbox Code Playgroud)