在python中,提取非英语单词

时间:2014-04-01 15:26:46

标签: python unicode

我有一个包含英文字符和其他语言字符的文本文件。 使用下面的代码,我想从这个文件中提取一些不是英文的单词 特别是韩国(Unicode范围从AC00到D7AF,UTF-8)

在这段代码中有没有办法做到这一点?

我还需要做点什么吗?

....
text = f.read()
words = re.findall(r'\w+', dataString)
f.close()
....

2 个答案:

答案 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)]