解析短文本并提取地址,邮政编码和全名

时间:2014-05-07 14:53:03

标签: python parsing text-parsing

在我正在处理的应用程序中,我必须从文本字符串中提取一些数据,如下所示:

First and last name | postal code | street and street number
John Smith 80-800 Washington Street 42/a

这类数据有很多种。确保用户不会在每种情况下都正确使用分隔符。

我打算将短信注册过程分成多条消息。但它可能不被接受。

最简单的解析方法是什么?我在解析这些文本时有哪些选择?

我的想法是调用数据库以获取邮政编码,如果找到邮政编码,那么它将是全名和街道地址的分隔符。

如果用户邮政编码错误,我会发送一条消息,通知他提供的数据格式无效。

1 个答案:

答案 0 :(得分:0)

鉴于这个例子,这是将字符串输入拆分为单独项目的一种非常罕见的方法。再次非常hacky。

string = "John Smith 80-800 Washington Street 42/a"

name = ""
postalCode = string
street = ""
place = 0
gotName = False

for i in range(len(string)):
    if(not name):
        try:
            int(string[i])
            name = string[:i-1] # -1 to remove the space
            place = i

            gotName = True
        except ValueError:
            pass
    else:
        try:
            int(string[i])
            place += 1
        except ValueError:
            street = string[place+1:] # +1 to remove the space


postalCode = postalCode.replace(name, '')
postalCode = postalCode.replace(street, '')
postalCode = postalCode.replace(' ', '') # removes any unwanted spaces

print "Name: ", name
print "Postal Code: ",postalCode
print "Street: ", street

给出输出:

Name:  John Smith
Postal Code:  80-800
Street:  Washington Street 42/a

希望这在某种程度上有所帮助。