对python的unicode正则表达式错误感到困惑

2024-10-02 12:24:32 发布

您现在位置:Python中文网/ 问答频道 /正文

有人能解释为什么python2.7x中的中间代码摘录会抛出错误吗

import re
walden = "Waldenström"
walden
print(walden)

s1 = "ö"
s2 = "Wal"
s3 = "OOOOO"

out = re.sub(s1, s3, walden)
print(out)

out = re.sub("W", "w", walden)
print(out)

# I need this one to work
out = re.sub('W', u'w', walden)
# ERROR

out = re.sub(u'W', 'w', walden)
print(out)

out = re.sub(s2, s1, walden)
print(out)

我很困惑,已经试过看手册了


Tags: importres3错误needoutthisprint
1条回答
网友
1楼 · 发布于 2024-10-02 12:24:32

waldenstr

walden = "Waldenström"

此代码用unicode字符串替换字符:

re.sub('W', u'w', walden)

结果应该是u'w' + "aldenström"。这是失败的部分

为了连接strunicode,必须首先将两者转换为unicode。结果也是unicode

问题是,解释器不知道如何将'ö'转换为unicode,因为它不知道使用哪种编码。结果不明确

解决方案是在进行更换之前先转换自己:

re.sub('W', u'w', unicode(walden, encoding))

encoding应该是用来创建该文件的

re.sub('W', u'w', unicode(walden, 'utf-8'))

相关问题 更多 >

    热门问题