在数据中规范化unicode

2024-10-04 05:25:51 发布

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

目前我的代码如下:

import unicodedata
unicode = open("unicode.txt").read()
unicode = unicodedata.normalize('NFKC', unicode)
print(unicode)

其中unicode.txt是只读取\u00e9的文本文件。你知道吗

当我运行程序时,输出仍然是\u00e9,但是,如果我用\u00e9替换.normalize行中的unicode,则输出是é。你知道吗

最终的目标只是将所有unicode字符串(例如.\u00e9)替换为它们的常规字符。像cafe而不是café。你知道吗

当字符串被输入函数时,normalize函数似乎可以正常工作,但当它在要打开的文件中时,就不能正常工作了。即使这样,它似乎也会返回样式化的é,而不是常规的e。你知道吗

有什么办法能让这件事成功吗?你知道吗


Tags: 函数字符串代码importtxtreadunicodeopen
1条回答
网友
1楼 · 发布于 2024-10-04 05:25:51

文件的内容是六个字符:\u0029'\u0029'键入的代码是表示为转义码的单个Unicode代码点:

>>> print('\u00e9')   # A single character escape code
é
>>> print(r'\u0039')  # A six-character string using raw string notation.
\u0039                # Escape codes are ignored and characters are literal.
>>> print('\\u0039')  # A six-character string using an escaped backslash
\u0039                # to indicate a literal backslash.

要将六个字符串转换为一个字符,请使用以下命令:

>>> r'\u00e9'.encode('ascii').decode('unicode-escape')
'é'

将ASCII字符的Unicode字符串转换为字节字符串需要ascii编码,因为在Python3中只能对字节字符串进行解码。python2可以跳过它,因为如果需要,它会隐式地将Unicode字符串编码回ASCII。
您还可以直接从文件中读取它(假设为Python 3),方法是:

with open('unicode.txt',encoding='unicode-escape') as f:
    data = f.read()

在python2上使用import ioio.open。你知道吗

相关问题 更多 >