Python正则表达式获取没有邮政编码的地址

时间:2015-02-11 03:52:09

标签: python regex

我想只获得没有邮政编码的地址

现在,我的方法将获得'Taiwan,XX Street XX Road,',并排除123

我如何才能排除邮政编码(80280233

邮政编码由3~5个数字组成

add1 = '802Taiwan,XX Street XX Road,123'
add2 = '80233Taiwan,XX Street XX Road,123'
result = re.findall(r'[\D]', add1)
result = re.findall(r'[\D]', add2)

3 个答案:

答案 0 :(得分:1)

您可以通过使用本机函数来完成此操作。此处不需要re

x="0233Taiwan,XX Street XX Road,123"
x=x.lstrip("0123456789").rstrip("0123456789")

使用lstriprstrip

答案 1 :(得分:0)

我想你想要这样的东西,

>>> add1 = '802Taiwan,XX Street XX Road,123'
>>> re.findall(r'^\d+(.*,)\d+$', add1)
['Taiwan,XX Street XX Road,']

OR

>>> re.findall(r'^(?:802|80233)(.*,)\d+$', add1)
['Taiwan,XX Street XX Road,']

答案 2 :(得分:0)

您的正则表达式为\D,其中不包括所有数字,包括最后的数字。这应该有效 -

In [4]: re.findall(r'^\d+(.*)$', add1)
Out[4]: ['Taiwan,XX Street XX Road,123']

In [5]: re.findall(r'^\d+(.*)$', add2)
Out[5]: ['Taiwan,XX Street XX Road,123']

您的解决方案的修改将是 -

In [7]: re.findall(r'\D+\d+$', add1)
Out[7]: ['Taiwan,XX Street XX Road,123']

In [8]: re.findall(r'\D+\d+$', add2)
Out[8]: ['Taiwan,XX Street XX Road,123']

这允许最后的数字。但是,这个解决方案很脆弱,因为我猜测XX也是数字。第一个解决方案r'^\d+(.*)$'确保只忽略开头的数字(邮政编码)。