Python RegEx从地址中分割街道和数字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python RegEx从地址中分割街道和数字相关的知识,希望对你有一定的参考价值。

我想分割街道和数字。

这是我当前的解决方案:

matches = re.match(r'^(?<street>[^,]*?)[,\s]*(?P<number>\d[\w\s\-/]*$)', street_number)

但在某些情况下不起作用。如果我有这样的例子:

working_examples = [
    'Somestreet 1',
    'Somestreet1',
    'Somestreet1a',
    'Somestreet 1a',
    'Somestreet 1 a'
]

[print(matches.groupdict())为work_examples的第一个元素打印:

'street': 'Somestreet', 'number': '1'

但是在这种情况下:

not_working_examples = [
    'Some 1 street',
    'Some 1a street'
]

打印

'street': 'Some ', 'number': '1 street'

我的目标是拥有

'street': 'Some 1 street', 'number': None

答案
import re


examples = [
    'Somestreet 1',
    'Somestreet1',
    'Somestreet1a',
    'Somestreet 1a',
    'Somestreet 1 a',
    'Some 1 street',
    'Some 1a street'
]

for s in examples:
    matches = re.match(r'^(?P<street>.+?)[,\s]*(?P<number>\d\s?\w?)$', s)
    if matches:
        print(matches.groups())
    else:
        print s, "doesn't match"

以上是关于Python RegEx从地址中分割街道和数字的主要内容,如果未能解决你的问题,请参考以下文章