2017-06-01 202 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