for key, value in supportProjectDict.iteritems():
line = re.sub(r'%s,' % key, r'%s,' % value, line.decode('utf-8'), flags=re.UNICODE)
试图通过将字典中找到的任何键替换为其对应的值来进行正则表达式替换,但一旦遇到非ASCII字符就会出现以下错误:
UnicodeEncodeError: 'ascii' codec can't encode character u'\u201d' in position 186: ordinal not in range(128)
re.UNICODE标志难道不应该防止这种情况发生吗?
line = re.sub(ur'%s,' % key.decode('utf8'), ur'%s,' % value.decode('utf8'), line.decode('utf-8'), flags=re.UNICODE).encode("utf8")
。重点是需要将所有内容转换为Unicode格式。我猜这是Python 2,对吗? - Wiktor Stribiżewkey
和value
。您使用什么编码? - Wiktor Stribiżewline
已经是 Unicode,则会出现该错误。请检查type(line)
并可能删除.decode('utf8')
。 - Mark Tolonen