从街道地址获取门牌号

2024-04-20 04:59:20 发布

您现在位置:Python中文网/ 问答频道 /正文

设置

我有包含英国格式地址的字符串,例如address = '6A McCarthy Way'。你知道吗

我需要从地址中获取门牌号,例如house_number = '6A


当前代码

我有以下工作代码

position = re.search('\d+', address).start()

if position == 0:
    for i in range(0,100000):    
        if address[position + i] != ' ':
            house_number = address[:position + i + 1]    
        else:
            break
else:
    house_number = address[position:]     

对于address = '6A McCarthy Way'address = 'McCarthy Way 6A',代码返回house_number = '6A'。你知道吗


问题

此代码假定

  • 门牌号要么在address的开头,要么在address的结尾
  • 门牌号和地址将仅为上述两种格式-例如从不address = '6A, McCarthy Way'address = '6 McCarthy Way'
  • address中没有错误-例如从不address = '6AMcCarthy Way'

最后,即使这些假设适用于所有情况,我也不确定这是否是最适合做这件事的方式。你知道吗

如何改进代码?你知道吗


Tags: 字符串代码renumbersearchifaddress地址
1条回答
网友
1楼 · 发布于 2024-04-20 04:59:20

使用re.search

import re
address = '6A McCarthy Way' 
address2 = 'McCarthy Way 6A'
address3 = 'McCarthy Way 6AAAA'

print(re.search("(\d+\w*)", address).group())
print(re.search("(\d+\w*)", address2).group()) 
print(re.search("(\d+\w*)", address3).group())

输出:

6A
6A
6AAAA

相关问题 更多 >