我正在使用格式不一致的美国地址,街道号码为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)处理字符串总是很棘手,我可能会忽略这种方法的重要案例。
答案 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大道