簡體   English   中英

從街道地址獲取門牌號

[英]Obtain house number from street address

設置

我有包含英國格式地址的字符串,例如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的開頭或結尾
  • 門牌號和地址只能是上述 2 種格式——例如從不address = '6A, McCarthy Way'address = '6 McCarthy Way'
  • address沒有錯誤——例如從不address = '6AMcCarthy Way'

最后,即使假設適用於所有情況,我也不確定這是最 Pythonic 的方法。

如何改進代碼?

使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM