我有一个包含英文字符和其他语言字符的文本文件。 使用下面的代码,我想从这个文件中提取一些不是英文的单词 特别是韩国(Unicode范围从AC00到D7AF,UTF-8)
在这段代码中有没有办法做到这一点?
我还需要做点什么吗?
....
text = f.read()
words = re.findall(r'\w+', dataString)
f.close()
....
答案 0 :(得分:1)
使用大写\W
=匹配非 - 字母数字字符,不包括 _
。
>>> re.findall('[\W]+', u"# @, --►(Q1)-grijesh--b----►((Qf)), ");
[u'# @, --\u25ba(', u')-', u'--', u'----\u25ba((', u')), ']
发件人:Unicode HOWTO?要阅读未编码的文本文件,请使用:
import codecs
f = codecs.open('unicode.rst', encoding='utf-8')
for l in f:
# regex code here
我有一个文件:
:~$ cat file
# @, --►(Q1)-grijesh--b----►((Qf)),
从Python中读取它:
>>> import re
>>> import codecs
>>> f = codecs.open('file', encoding='utf-8')
>>> for l in f:
... print re.findall('[\W]+', l)
...
[u'# @, --\u25ba(', u')-', u'--', u'----\u25ba((', u')),\n']
>>>
要阅读字母词,请尝试
>>> f = codecs.open('file', encoding='utf-8')
>>> for l in f:
... print re.findall('[^\W]+', l)
...
[u'Q1', u'grijesh', u'b', u'Qf']
注意:小\w
匹配字母数字字符,包括 _
。
答案 1 :(得分:0)
查找AC00到D7AF范围内的所有字符:
import re
L = re.findall(u'[\uac00-\ud7af]+', data.decode('utf-8'))
查找所有非ascii字词:
import re
def isascii(word):
return all(ord(c) < 128 for c in word)
words = re.findall(u'\w+', data.decode('utf-8'))
non_ascii_words = [w for w in words if not isascii(w)]