【发布时间】:2014-08-15 13:00:21
【问题描述】:
我有一串字符,包括 [a-z] 以及 á,ü,ó,ñ,å,... 等等。目前我正在使用正则表达式来获取文件中包含这些字符的每一行。
spanishList.txt 示例:
adan
celular
tomás
justo
tom
átomo
camara
rosa
avion
Python代码(charactersToSearch来自flask@application.route('/<charactersToSearch>')):
print (charactersToSearch)
#'átdsmjfnueó'
...
#encode
charactersToSearch = charactersToSearch.encode('utf-8')
query = re.compile('[' + charactersToSearch + ']{2,}$', re.UNICODE).match
words = set(word.rstrip('\n') for word in open('spanishList.txt') if query(word))
...
当我这样做时,我希望在文本文件中获得包含charactersToSearch 中字符的单词。它非常适用于没有特殊字符的单词:
...
#after doing further searching for other conditions, return list of found words.
return '<br />'.join(sorted(set(word for (word, path) in solve())))
>>> adan
>>> justo
>>> tom
唯一的问题是它会忽略文件中所有不是 ASCII 的单词。我也应该得到tomás 和átomo。
我已尝试使用 ur'[...] 进行编码 UTF-8,但我无法让它适用于所有字符。文件和程序 (# -*- coding: utf-8 -*-) 也是 utf-8 格式。
【问题讨论】:
-
你试过
query = re.compile(u'[' + charactersToSearch + ']{2,}$', re.UNICODE).match而不是将charactersToSearch编码为utf8吗?而是将其保留为unicode?span> -
为了澄清,您是否认为
á是非ASCII 码?在扩展表中是 12 月 225 日。 (但也可以表示为a+ 重音) -
@JoranBeasley 是的。我已经尝试了两种方法,但每次我得到的单词列表都不包含任何特殊字符。
-
@zx81 我不知道如何回应。如何检查?
标签: python regex python-2.7 encoding utf-8