Python 提取没有编号街道名称的街道地址

Python 提取没有编号街道名称的街道地址,python,regex,openstreetmap,Python,Regex,Openstreetmap,我试图从以下地址提取街道号码: 1520 32nd Street 3215 Sheldon Rd 但不是替换数字,而是首先得到32 python> re.sub(r'\D', '', street) 152032 3215 我很确定我需要一个否定的视角,但我不能正确地看待它。如果您首先参与地址规范化的过程,您的任务似乎会更容易:将地址转换为具有定义良好字段的标准格式。有各种各样的工具来做这件事;该模块似乎适用于美国地址 >>> import usaddress &g

我试图从以下地址提取街道号码:

1520 32nd Street
3215 Sheldon Rd
但不是替换数字,而是首先得到32

python>  re.sub(r'\D', '', street)
152032
3215

我很确定我需要一个否定的视角,但我不能正确地看待它。

如果您首先参与地址规范化的过程,您的任务似乎会更容易:将地址转换为具有定义良好字段的标准格式。有各种各样的工具来做这件事;该模块似乎适用于美国地址

>>> import usaddress
>>> addr = usaddress.tag('1520 32nd St')
>>> addr[0]['AddressNumber']
'1520'
至于你的第二个地址:

>>> addr = usaddress.tag('3215 Sheldon Rd')
>>> addr[0]['AddressNumber']
'3215'

你想提取还是替换?两种不同的东西,我想要15203215,但不是关于输入数据的少量信息。根据您的两个非常简单的示例,您可以使用
split()[0]
。另外,您的输入来自哪里?您的问题带有#openstreetmap标签。然而,在OSM中,地址由几个部分组成,即不是单个字符串。因此,根据您的用例,处理原始OSM数据可能会更容易,因为您不必执行任何检测地址格式的魔术。