昨天我的應用程序的這一部分工作,我似乎無法找出爲什麼它現在不工作。有條件地重新格式化字符串時出錯
這裏是它應該做的:
輸入:10th ave 501
輸出:501 10th ave
的代碼塊應該尋找所謂patterns
在列表中的目標詞之一,而如果後面有一個len <= 4
,將它移動到字符串的前面。 patterns
包含文字如ave, street, road, place
。
這裏是我的代碼:
address = address.split(' ')
for pattern in patterns:
try:
if address[0].isdigit():
continue
location = address.index(pattern) + 1
number_location = address[location]
if 'th' in address[location + 1] or 'floor' in address[location + 1] or '#' in address[location]:
continue
except (ValueError, IndexError):
continue
if number_location.isdigit() and len(number_location) <= 4:
address = [number_location] + address[:location] + address[location+1:]
break
address = ' '.join(address)
print address
目前輸出僅僅是完全相同的爲我輸入。即10th ave 501
正在返回10th ave 501
。我覺得這是相當明顯的,我看了一眼。
爲了讓您更容易理解您的代碼,只需將一種類型的數據放入一個單一的變量名稱。例如,你將'address'作爲一個字符串並且也作爲一個列表('address = address.split('')')。 – dsh
501的長度不能小於或等於4? – Harrison
@哈里森如果這不是家庭作業,你想解決街道正常化的問題,也許這個[包](https://github.com/openvenues/pypostal)可以幫你解決 – BPL