Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 检测unicode字符串中的非ascii字符_Python_Unicode_Python 3.x - Fatal编程技术网

Python 检测unicode字符串中的非ascii字符

Python 检测unicode字符串中的非ascii字符,python,unicode,python-3.x,Python,Unicode,Python 3.x,给定一个文本文件(或unicode字符串),什么是检测ascii编码之外的字符的好方法?我可以很容易地将每个字符迭代传递给ord(),但我想知道是否有更有效、更优雅或更惯用的方法 这里的最终目标是编译数据中无法编码为ascii的字符列表 如果有必要,我的语料库的大小大约是500MB/1200个文本文件。在Win7(64位)上运行(预编译的)Python 3.3.1 这里的最终目标是编译数据中的字符列表 无法编码为ascii的 我能想到的最有效的方法是去掉所有有效的ASCII字符,这将给您留下一个

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

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

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

这里的最终目标是编译数据中的字符列表 无法编码为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'])
看看