python - 'Ascii' 编解码器无法在位置 186 : ordinal not in range(128) 对字符 u'\u201d' 进行编码

标签 python regex python-2.7 unicode

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 标志来阻止这种情况吗?

最佳答案

每次使用变量都需要使用.decode('utf8'),并且.encode("utf8")结果和所有字符串应该作为 Unicode 字符串传递:

line = re.sub(ur'%s,' % key.decode('utf8'), ur'%s,' % value.decode('utf8'), line.decode('utf8'), flags=re.UNICODE).encode("utf8")

参见 IDEONE demo

关于python - 'Ascii' 编解码器无法在位置 186 : ordinal not in range(128) 对字符 u'\u201d' 进行编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33221977/

相关文章:

python - 有效替换应用于 numpy 数组的 vstack + concatenate

c# - 查找取自字符串的关键字,然后在字符串列表中查找

regex - 在 Notepad++ 中用引号包裹文本

python-2.7 - Matplotlib:如何仅更改边缘的 alpha

python - 检查弃用警告的代码

Python 将IP转换为八进制地址

python - 使用 conda for Anaconda IDE 创建新环境后出现 VCRUNTIME140.dll 错误

javascript - 如何定位重复的 JS 元素 BeautifulSoup Python

python - 如何自定义 pygments 的输出?

c# - 为什么反斜杠的这个替换不起作用?