正则表达式匹配以点(。)和下划线结尾的西班牙语单词

时间:2014-04-01 20:46:08

标签: regex python-2.7

这是我正在尝试的正则表达式:

([\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)

2 个答案:

答案 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提取城市字符串。