gpt4 book ai didi

python - 如何在 Python 2.7 中打印类似 “u{variable}” 的 Unicode?

转载 作者:太空宇宙 更新时间:2023-11-04 08:34:57 27 4
gpt4 key购买 nike

例如,我可以像这样打印 Unicode 符号:

print u'\u00E0'

或者

a = u'\u00E0'
print a

但看起来我不能做这样的事情:

a = '\u00E0'
print someFunctionToDisplayTheCharacterRepresentedByThisCodePoint(a)

主要用例将在循环中。我有一个 unicode 代码点列表,我希望在控制台上显示它们。像这样的东西:

with open("someFileWithAListOfUnicodeCodePoints") as uniCodeFile:
for codePoint in uniCodeFile:
print codePoint #I want the console to display the unicode character here

该文件有一个 unicode 代码点列表。例如:

2109
OOBO
00E4
1F1E6

循环应该输出:


°
ä
🇦

任何帮助将不胜感激!

最佳答案

这可能不是一个好方法,但它是一个开始:

>>> x = '00e4'
>>> print unicode(struct.pack("!I", int(x, 16)), 'utf_32_be')
ä

首先,我们得到十六进制字符串x表示的整数。我们将其打包成一个字节字符串,然后我们可以使用 utf_32_be 编码对其进行解码。

因为你经常这样做,你可以预编译结构:

int2bytes = struct.Struct("!I").pack
with open("someFileWithAListOfUnicodeCodePoints") as fh:
for code_point in fh:
print unicode(int2bytes(int(code_point, 16)), 'utf_32_be')

如果觉得更清楚,也可以直接使用decode方法代替unicode类型:

>>> print int2bytes(int('00e4', 16)).decode('utf_32_be')
ä

Python 3 向 int 类添加了一个 to_bytes 方法,让您可以绕过 struct 模块:

>>> str(int('00e4', 16).to_bytes(4, 'big'), 'utf_32_be')
"ä"

关于python - 如何在 Python 2.7 中打印类似 “u{variable}” 的 Unicode?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49958062/

27 4 0