2014-10-13 1 views
0

Есть ли способ сделать следующее для текстовых файлов с символами Unicode, например. китайский/японский:Как сделать re.findall (' w +', fin.read()) для unicode? python

with io.open(infile, 'r', encoding='utf8') as fin: 
    words = re.findall('\w+', fin.read()) 
    x = Counter(zip(words,words[1:])) 
print x 

Я пытался, но x возвращает:

[] 
+0

я думаю, я мог бы также сделать 'fin.read(). Расколу()' – alvas

+2

Pass [ 'флаги = re.U'] (https://docs.python.org/2/library/ re.html # re.U). –

ответ

2

Как прокомментировал Ashwini Чаудхари, вам нужно указать re.U или re.UNICODE флаг для создания шаблона \w зависит от базы данных символов Юникода.

>>> re.findall('\w+', u'單語') 
[] 
>>> re.findall('\w+', u'單語', flags=re.UNICODE) 
[u'\u55ae\u8a9e'] 
0

Как предложил @Ashiwini, это сработало:

words = re.findall('\w+', trgfin.read(), flags=re.U) 
x = Counter(zip(words, words[1:]) 

 Смежные вопросы

  • Нет связанных вопросов^_^