这是我正在尝试的正则表达式:
([\w\s\/áéíóúüñçåÁÉÍÓÚÜÑÇÐ\-]+)(\.\_)
以下是两个应该匹配的示例:
EL ROSARIO / ESCUINAPA._ Conpocomásde4 mil比索...
和
Cuautitlán._Conpocomásde4 mil比索......
该表达式适用于第一个示例,但不适用于第二个示例,因为编码可能是:
docHtml = urllib.urlopen(link).read()
#using the lxml function html
tree = html.fromstring(docHtml)
newsCity = CSSSelector('#pid p')
try:
city_paragraph = newsCity(tree)
city_match = re.search('([\w\s\/áéíóúüñçåÁÉÍÓÚÜÑÇÐ\-]+\._)',city_paragraph[0].text)
答案 0 :(得分:0)
您的正则表达式似乎是正确的。我怀疑这个错误在于你如何阅读你所匹配的字符串。你想要这样的东西:
import codecs
f = codecs.open('spanish.txt', encoding='utf-8')
for line in f:
print repr(line)
答案 1 :(得分:0)
终于明白了:
newsCity = CSSSelector('#tamano5 p')
city_paragraph = newsCity(tree)
city_p = city_paragraph[0].text
city_utf=city_p.encode("utf-8")
city_match = re.search('([\w\s\/áéíóúüñçåÁÉÍÓÚÜÑÇÐ\-]+\._)',city_utf)
这给了我预期的结果,在这种情况下是使用re.search提取城市字符串。