Python unicode字符串

2024-06-28 19:02:55 发布

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

我是一名Python新手,我正在尝试制作一个脚本,如果有差异,可以在文件中写入一些字符串。问题是原始字符串中有一些字符采用\uNNNNUnicode格式,我无法将新字符串转换为相同的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格式

注意:字符串中的字符大小写也需要相同才能进行比较


Tags: 字符串格式unicode字符printstrstr1str2
1条回答
网友
1楼 · 发布于 2024-06-28 19:02:55

问题是,根据the docs(在转义序列表之间向下读一点,\u\U\NUnicode转义序列只在字符串文本中被识别。这意味着,一旦在内存中(例如在变量赋值中)计算了文本:

s = "\u00A1 ATENCI\u00D3N! \u25C4"

任何试图^{}的操作都会自动将其转换为使用\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

这就是你需要做的所有比较

为了进一步阅读,您可能会对以下内容感兴趣:

相关问题 更多 >