2016-03-02 21 views
3

我有一個西班牙語文本文件,所以它有成千上萬的單詞,其中一些重音符號。我使用重新模塊來提取一些單詞,但是當我得到一個列表時,有些單詞是不完整的。編碼Python列表以便使用重新模塊

這是我的代碼的第一部分:

projectsinline = open('projectsinline.txt', 'r') 

for lines in projectsinline: 

    pattern = r'\b[a-zA-Z]{6}\b' 
    words = re.findall(pattern, lines) 

    print words 

這是輸出的一個例子:

['creaci', 'Estado', 'relaci', 'Regula', 'estado', 'comisi', 'delito'] 

它應該是這樣的:

['creación', 'Estado', 'relación', 'Regula', 'estado', 'comisión', 'delito'] 

我發現這個答案:Encode Python list to UTF-8但它沒有幫助,因爲我的文本來自一個文本文件,所以我不能使用thi s代碼:

import re 
import codecs 
import sys 

sys.stdout = codecs.getwriter('UTF-8')(sys.stdout) 

projectsinline = open('projectsinline.txt', 'r') 

for lines in projectsinline: 

    pattern = ur'\b[a-zA-Z]{6}\b' 
    unicode_pattern = re.compile(pattern, re.UNICODE) 
    result = unicode_pattern.findall(lines) 
    print result 

現在,輸出會跳過有重音的單詞。

任何意見,以解決這個問題,讚賞?

謝謝!

+0

什麼是你想用''在你的正則表達式{6}模式呢? – happydave

+0

're.compile(r「\ w +」,re.UNICODE)'是否適合您的情況? – univerio

+0

{6}發現只有6個字母的單詞 – estebanpdl

回答

4

您可以利用此r'\b[a-zA-Z]{6}\b'採摘與6個字母的單詞, 一些在你的榜樣的話有更多的字母和因爲你的特殊符號視爲不單詞字符和字邊界工作了這些信件會被截斷。

如果你想要6個字母的所有單詞,我會用\w

will match the characters [0-9_] plus whatever is classified as alphanumeric in the Unicode character properties database.

import re 
import codecs 

with codecs.open('projectsinline.txt', 'r', encoding="utf-8") as f: 
    for line in f: 
     unicode_pattern = re.compile(r'\b\w{6}\b', re.UNICODE) 
     result = unicode_pattern.findall(line) 
     for word in result: 
      print word 

例字符串:

creación, longstring, lación, Regula, estado, misión 

輸出:

lación 
Regula 
estado 
misión 
+0

沒錯。我的錯。輸出顯示不完整的單詞,但它不應該顯示它們,它應該找到像這樣的單詞:'['...','código','...']'例如。 – estebanpdl

+0

我爲您添加了修改後的代碼 – tinySandy

+0

非常感謝,@minitoto。它可以工作,但輸出如下:'[...'T \ xedtulo','\ xfaltimo','C \ xf3digo','財政','emitir','財政','C \ xf3digo'。 ..]' – estebanpdl

相關問題