在Python中用非英文文本分隔字母和非字母字符

时间:2017-06-19 11:34:29

标签: regex python-2.7 unicode replace extraction

我正在使用Python 2.7抓取一个葡萄牙语网站,我想分开括号内的拉丁文字和数字。每个文本看起来像:

text = 'Obras de revisão e recuperação (45453000-7)'

我尝试了以下代码:

#-*- coding: utf-8 -*-
import re
text = u'Obras de revisão e recuperação (45453000-7)'
re.sub(r'\([0-9-]+\)', u'', text).encode("utf8")

输出是:

'Obras de revis\xc3\xa3o e recupera\xc3\xa7\xc3\xa3o '

我也想删除括号并获得如下输出:

name = 'Obras de revisão e recuperação'
code = '45453000-7'

1 个答案:

答案 0 :(得分:2)

应该这样工作:

档案:/tmp/foo.py

#-*- coding: utf-8 -*-
import re
text = u'Obras de revisão e recuperação (45453000-7)'
print re.sub(r'\([0-9-]+\)', u'', text)

注意,没有.encode('utf-8')事。

现在,在python控制台中:

>>> import re
>>> text = u'Obras de revisão e recuperação (45453000-7)'
>>> re.sub(r'\([0-9-]+\)', u'', text)
u'Obras de revis\xe3o e recupera\xe7\xe3o '
>>> print re.sub(r'\([0-9-]+\)', u'', text)
Obras de revisão e recuperação

如您所见,print re.sub(..)(又名unicode.__str__())与unicode.__repr__()不会返回相同的内容。

我怀疑你正在努力解决这个问题。

供参考:Difference between __str__ and __repr__ in Python