将字符串转换为相应的街道号

时间:2017-06-01 05:12:15

标签: python string geocoding street-address

我正在使用格式不一致的美国地址,街道号码为E.G:

358 SEVENTH AVENUE MANHATTAN 10001

我需要它为:

358 7th Ave, New York, NY 10001

使用像usaddress这样的地址解析器,我可以将街道名称分开:

SEVENTH AVENUE

由此,我可以将问题处理为:

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)处理字符串总是很棘手,我可能会忽略这种方法的重要案例。

2 个答案:

答案 0 :(得分: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'

希望这会有所帮助。谢谢!

答案 1 :(得分:0)

导入重新

numbers_mapping = {'第七':'第七''八':'第八'}

street_name =' SEVENTH AVENUE'

street_name = street_name.lower()

表示number_mapping中的键:

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

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

print street_name

第7大道