检测Unicode字符串中的非ASCII字符

2024-05-16 13:57:41 发布

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

给定一个文本文件(或unicode字符串),什么是检测ascii编码以外字符的好方法?我可以很容易地迭代将每个字符传递给ord(),但是我想知道是否有一种更有效、更优雅或更习惯的方法来完成这个任务。

这里的最终目标是编译数据中不能编码为ascii的字符列表。

如果重要的话,我的语料库大小大约是500MB/1200个文本文件。在Win7(64位)上运行(预编译的vanilla)Python 3.3.1。


Tags: 数据方法字符串编码列表asciiunicode字符
1条回答
网友
1楼 · 发布于 2024-05-16 13:57:41

The ultimate goal here is to compile a list of characters in the data that cannot encode to ascii.

我能想到的最有效的方法是使用^{}来去掉任何有效的ASCII字符,这会给您留下一个包含所有非ASCII字符的字符串。

这只会去掉可打印的字符。。。

>>> import re
>>> print re.sub('[ -~]', '', u'£100 is worth more than €100')
£€

…或者如果要包含不可打印字符,请使用此。。。

>>> print re.sub('[\x00-\x7f]', '', u'£100 is worth more than €100')
£€

要消除重复,只需创建返回字符串的set()。。。

>>> print set(re.sub('[\x00-\x7f]', '', u'£€£€'))
set([u'\xa3', u'\u20ac'])

相关问题 更多 >