如何在Python中将Unicode字符串转换为普通文本

5
考虑我有一个Unicode字符串(不是真正的Unicode,而是看起来像Unicode的字符串)。我想获取它的utf-8变体。在Python中我如何做到这一点?
例如,如果我有这样的字符串:
title = "\\u10d8\\u10e1\\u10e0\\u10d0\\u10d4\\u10da\\u10d8 == \\u10d8\\u10d4\\u10e0\\u10e3\\u10e1\\u10d0\\u10da\\u10d8\\u10db\\u10d8"

如何获取其UTF-8变体(格鲁吉亚符号):

ისრაელი == იერუსალიმი

简而言之,我想要的代码如下:

title = "\\u10d8\\u10e1\\u10e0\\u10d0\\u10d4\\u10da\\u10d8 == \\u10d8\\u10d4\\u10e0\\u10e3\\u10e1\\u10d0\\u10da\\u10d8\\u10db\\u10d8"
utfTitle = title.TurnToUTF()
print(utfTitle)

我希望这段代码能够输出:

Israel等于Jerusalem


请参见以下链接:https://dev59.com/B3M_5IYBdhLWcg3wNwUv - ozking
我认为这个链接可以帮助你... - Moshe Slavin
@MosheSlavin 这并没有帮助。 - Giorgi Cercvadze
@ozking 这并没有帮助。 - Giorgi Cercvadze
3个回答

6

这里有一个方法,只需要使用decode方法并应用unicode_escape

对于Python 2.x版本

title = "\\u10d8\\u10e1\\u10e0\\u10d0\\u10d4\\u10da\\u10d8 == \\u10d8\\u10d4\\u10e0\\u10e3\\u10e1\\u10d0\\u10da\\u10d8\\u10db\\u10d8"
utfTitle = title.decode('unicode_escape')
print(utfTitle)

#output :ისრაელი == იერუსალიმი

适用于 Python 3.x

title = "\\u10d8\\u10e1\\u10e0\\u10d0\\u10d4\\u10da\\u10d8 == \\u10d8\\u10d4\\u10e0\\u10e3\\u10e1\\u10d0\\u10da\\u10d8\\u10db\\u10d8"
print(title.encode('ascii').decode('unicode-escape'))

6
你可以使用 unicode-escape 编解码器来消除双反斜杠并有效使用字符串。
假设 title 是一个 str,你需要先对字符串进行编码,然后再解码回 Unicode(str)。
>>> t = title.encode('utf-8').decode('unicode-escape')
>>> t
'ისრაელი == იერუსალიმი'

如果title是一个bytes实例,您可以直接解码:

>>> t = title.decode('unicode-escape')
>>> t
'ისრაელი == იერუსალიმი'

0

假设Unicode是str类型,使用decode和unicode-escape方法进行转换

title="\\u10d8\\u10e1\\u10e0\\u10d0\\u10d4\\u10da\\u10d8 == \\u10d8\\u10d4\\u10e0\\u10e3\\u10e1\\u10d0\\u10da\\u10d8\\u10db\\u10d8"

res1 = title.encode('utf-8')

res2 = res1.decode('unicode-escape')

print(res2)

UnicodeEncodeError: 'cp932' 编解码器无法在位置0处编码字符'\u10d8':非法的多字节序列。 - Muhammad Tahir Qaiser

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接