我正在与我们的地址合作,其格式不一致,例如在街道编号中:
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
第七大道