2017-06-01 28 views
0

我與美國合作解決其有不一致的格式,例如,在街道號碼:字符串轉換爲相應的街道號碼

358 SEVENTH AVENUE MANHATTAN 10001 

我需要它爲:

358 7th Ave, New York, NY 10001 

使用一個地址解析器像usaddress我可以分離出街道名稱:

SEVENTH AVENUE 

從此,我就哈ndle問題爲:

numbers_mapping = {'seventh':'7th','eight':'8th'} 

street_name = 'SEVENTH AVENUE' 
street_name = street_name.lower() 

for key in numbers_mapping: 
    if key in street_name.split(): 
     street_name = street_name.replace(key,numbers_mapping[key]) 

print street_name 
7th avenue 

我必須用這種方法的問題:

1)首先,我不知道有多少街道號碼是有效的,我不想手動創建創建對於似乎很常見的問題,字典太大。

2)處理字符串總是很棘手,我可能會忽略這種方法的一些重要情況。

回答

1

您可以使用此代碼段ghewgill將文本數字符號轉換爲數字符號。

腳本的鏈接可以找到here

在上面的代碼段中,我能夠通過進行以下的修改,以獲得所需的結果:

Small = { 
'zeroth': 0, 
'first': 1, 
'second': 2, 
'third': 3, 
'fourth': 4, 
'fifth': 5, 
'sixth': 6, 
'seventh': 7, 
'eighth': 8, 
'ninth': 9, 
'tenth': 10, 
'eleventh': 11, 
'twelfth': 12, 
'thirteenth': 13, 
'fourteenth': 14, 
'fifteenth': 15, 
'sixteenth': 16, 
'seventeenth': 17, 
'eighteenth': 18, 
'nineteenth': 19, 
'twenty': 20, 
'thirty': 30, 
'forty': 40, 
'fifty': 50, 
'sixty': 60, 
'seventy': 70, 
'eighty': 80, 
'ninety': 90 

}

隨着主要功能爲:

num = texttonum("string_evquivalent") 
if num == 1: 
    print str(num) + 'st' 
elif num == 2: 
    print str(num) + 'nd' 
else: 
    print str(num) + 'th' 

希望這有助於。謝謝!

0

進口重新

numbers_mapping = { '十七': '7', '八': '8號'}

STREET_NAME = '第七大道'

STREET_NAME = street_name.lower()

在numbers_mapping鍵:

 if re.search(key,street_name.split(" ")[0],re.I): 

      street_name = street_name.replace(key,numbers_mapping[key]) 

打印STREET_NAME

第7大道

+0

請嘗試此操作,它可能有助於 – IsaBostan

相關問題