【发布时间】:2021-11-03 02:17:48
【问题描述】:
我是一名 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 格式?
注意:字符串中的字符大小写也需要相同才能比较。
【问题讨论】:
-
在 Python 3 中,默认情况下所有字符串都是 Unicode,因此您的第一行可以简单地为
str = '¡ ATENCIÓN! ◄'。我不确定您要对其他行做什么。 -
感谢第一行提示!我正在尝试将新字符串转换为与旧字符串相同的格式。
-
请注意,
str是一种内置类型,因此非常不鼓励(且令人困惑)将其用作变量名。如果你想在更大的应用程序中这样做,你可能会破坏代码。 -
为什么使用
unicode_escape编码并使用utf-8解码(并期望它产生原始字符串)?如果您对两者使用相同的编码,您应该得到相同的结果。如果你使用不同的编码,你得到不同的结果是合乎逻辑的。
标签: python python-3.x unicode