【发布时间】:2016-06-14 16:33:21
【问题描述】:
我有一个西班牙语文本文件,所以它有数千个单词,其中一些带有重音符号。我正在使用 re 模块来提取一些单词,但是当我得到一个列表时,有些单词是不完整的。
这是我的代码的第一部分:
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 但它没有帮助,因为我的文本来自文本文件,所以我不能使用这个代码:
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
现在,输出会跳过带有重音的单词。
有任何解决问题的建议吗?
谢谢!
【问题讨论】:
-
你想用你的正则表达式模式中的
{6}做什么? -
re.compile(r"\w+", re.UNICODE)适合您的情况吗? -
{6} 只查找包含 6 个字母的单词
-
我觉得我一定错过了什么。那为什么你的“应该是这样的”列表包含一堆超过 6 个字母的条目?
-
@univerio 如果我使用
re.compile(r"\w+", re.UNICODE),它也不起作用,我得到另一个我不需要的字母数字标签。
标签: python regex python-2.7 encode python-2.x