如何正确打印出带有unicode转义字符的字符串
How to print out strings with unicode escape characters correctly
我正在从包含嵌入式 unicode 转义序列的文件中读取字符串,
\u00e9
为例。
当我使用 print()
打印文字字符串时,编码被打印转换为正确的字符,但是如果我从标准输入中获取字符串并将它们打印出来,打印不会将转义序列转换为 unicode 字符。
例如,当我使用:
print ("Le Condamn\u00e9 \u00e0 mort")
python 正确打印 Le Condamné à mort
但是,如果我从 stdin 获得相同的字符串,我会得到:Le Condamn\u00e9 \u00e0 mort
有谁知道如何让 python 将转义序列转换为正确的 unicode 字符?另外,为什么 print
在给它一个字符串文字而不是一个字符串变量时表现不同?
\u00e0
被存储为 python 的 Unicode 数字,因此它被打印为 'à'。当您从另一个文件中获取它时,它完全是字符串形式,这意味着它会存储为 '\u00e0'
,其中每个字符都是一个字符串。
一个解决方案是确定 '\u00e0'
在列表中的位置,然后将其替换为 '\u00e0'
这里有一些代码可以将字符串中的 '\u00e0'
转换成它应该是的字符。
def special_char_fix(string):
string = list(string)
for pl, char in enumerate(string):
if char == '\':
val = ''.join([string[pl + k + 2] for k in range(4)])
for k in range(5):
string.pop(pl)
string[pl] = str(chr(int(val, 16)))
return ''.join(string)
我相信您正在寻找 str.encode("string-escape") 函数
示例代码
s = "Le Condamn\u00e9 \u00e0 mor"
ra=s.encode('unicode_escape').decode()
print(ra)
输出
Le Condamn\xe9 \xe0 mor
the image contains the code snippet with output
我正在从包含嵌入式 unicode 转义序列的文件中读取字符串,
\u00e9
为例。
当我使用 print()
打印文字字符串时,编码被打印转换为正确的字符,但是如果我从标准输入中获取字符串并将它们打印出来,打印不会将转义序列转换为 unicode 字符。
例如,当我使用:
print ("Le Condamn\u00e9 \u00e0 mort")
python 正确打印 Le Condamné à mort
但是,如果我从 stdin 获得相同的字符串,我会得到:Le Condamn\u00e9 \u00e0 mort
有谁知道如何让 python 将转义序列转换为正确的 unicode 字符?另外,为什么 print
在给它一个字符串文字而不是一个字符串变量时表现不同?
\u00e0
被存储为 python 的 Unicode 数字,因此它被打印为 'à'。当您从另一个文件中获取它时,它完全是字符串形式,这意味着它会存储为 '\u00e0'
,其中每个字符都是一个字符串。
一个解决方案是确定 '\u00e0'
在列表中的位置,然后将其替换为 '\u00e0'
这里有一些代码可以将字符串中的 '\u00e0'
转换成它应该是的字符。
def special_char_fix(string):
string = list(string)
for pl, char in enumerate(string):
if char == '\':
val = ''.join([string[pl + k + 2] for k in range(4)])
for k in range(5):
string.pop(pl)
string[pl] = str(chr(int(val, 16)))
return ''.join(string)
我相信您正在寻找 str.encode("string-escape") 函数
示例代码
s = "Le Condamn\u00e9 \u00e0 mor"
ra=s.encode('unicode_escape').decode()
print(ra)
输出
Le Condamn\xe9 \xe0 mor
the image contains the code snippet with output