Python unicode 字符串
Python unicode strings
我是一个 Python 新手,我正在尝试制作一个脚本,如果有差异,它会在文件中写入一些字符串。问题是原始字符串中有一些 \uNNNN
Unicode 格式的字符,我无法将新字符串转换为相同的 Unicode 格式。
我要比较的原始字符串:\u00A1 ATENCI\u00D3N! \u25C4
收到的新字符串为:¡ ATENCIÓN! ◄
这是代码
str = u'¡ ATENCIÓN! ◄'
print(str)
str1 = str.encode('unicode_escape')
print (str1)
str2 = str1.decode()
print (str2)
结果是:
¡ ATENCIÓN! ◄
b'\xa1 ATENCI\xd3N! \u25c4'
\xa1 ATENCI\xd3N! \u25c4
那么,我怎样才能将 \xa1 ATENCI\xd3N! \u25c4
转换为 \u00A1 ATENCI\u00D3N! \u25C4
,因为这是我唯一可以保存的 Unicode 格式?
注意:字符串中字符的大小写也需要相同才能比较
问题是,根据 the docs(在转义序列表之间向下阅读一点),\u
、\U
和 \N
Unicode转义序列 仅在字符串文字 中被识别。这意味着一旦文字在内存中被评估,例如在变量赋值中:
s = "\u00A1 ATENCI\u00D3N! \u25C4"
任何尝试 str.encode()
它会自动将其转换为使用 \x
的字节对象,它可以:
b'\xa1 ATENCI\xd3N! \u25c4'
正在使用
b'\xa1 ATENCI\xd3N! \u25c4'.decode("unicode_escape")
会将其转换回 '¡ ATENCIÓN! ◄'
。这使用字符的实际(预期)表示,而不是原始字符串 s
.
的 \uXXXX
转义序列
所以,你应该做的是而不是乱搞编码和解码的事情。观察:
print("\u00A1 ATENCI\u00D3N! \u25C4" == '¡ ATENCIÓN! ◄')
True
这就是您需要做的所有比较。
如需进一步阅读,您可能对以下内容感兴趣:
- Encodings and Unicode 来自 Python 文档。
我是一个 Python 新手,我正在尝试制作一个脚本,如果有差异,它会在文件中写入一些字符串。问题是原始字符串中有一些 \uNNNN
Unicode 格式的字符,我无法将新字符串转换为相同的 Unicode 格式。
我要比较的原始字符串:\u00A1 ATENCI\u00D3N! \u25C4
收到的新字符串为:¡ ATENCIÓN! ◄
这是代码
str = u'¡ ATENCIÓN! ◄'
print(str)
str1 = str.encode('unicode_escape')
print (str1)
str2 = str1.decode()
print (str2)
结果是:
¡ ATENCIÓN! ◄
b'\xa1 ATENCI\xd3N! \u25c4'
\xa1 ATENCI\xd3N! \u25c4
那么,我怎样才能将 \xa1 ATENCI\xd3N! \u25c4
转换为 \u00A1 ATENCI\u00D3N! \u25C4
,因为这是我唯一可以保存的 Unicode 格式?
注意:字符串中字符的大小写也需要相同才能比较
问题是,根据 the docs(在转义序列表之间向下阅读一点),\u
、\U
和 \N
Unicode转义序列 仅在字符串文字 中被识别。这意味着一旦文字在内存中被评估,例如在变量赋值中:
s = "\u00A1 ATENCI\u00D3N! \u25C4"
任何尝试 str.encode()
它会自动将其转换为使用 \x
的字节对象,它可以:
b'\xa1 ATENCI\xd3N! \u25c4'
正在使用
b'\xa1 ATENCI\xd3N! \u25c4'.decode("unicode_escape")
会将其转换回 '¡ ATENCIÓN! ◄'
。这使用字符的实际(预期)表示,而不是原始字符串 s
.
\uXXXX
转义序列
所以,你应该做的是而不是乱搞编码和解码的事情。观察:
print("\u00A1 ATENCI\u00D3N! \u25C4" == '¡ ATENCIÓN! ◄')
True
这就是您需要做的所有比较。
如需进一步阅读,您可能对以下内容感兴趣:
- Encodings and Unicode 来自 Python 文档。