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



我正在与我们的地址合作,其格式不一致,例如在街道编号中:

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(处理字符串总是很棘手的,我可能会以这种方法忽略大量的情况。

您可以使用GHEWGILL的此代码片段,该代码片段将文本编号符号转换为数字。

可以在此处找到指向脚本的链接。

在上述代码段中,我能够通过进行以下修改来获得所需的结果:

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'

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

导入re

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

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])

print street_name

第七大道

最新更新