在我正在处理的应用程序中,我必须从文本字符串中提取一些数据,如下所示:
First and last name | postal code | street and street number
John Smith 80-800 Washington Street 42/a
这类数据有很多种。确保用户不会在每种情况下都正确使用分隔符。
我打算将短信注册过程分成多条消息。但它可能不被接受。
最简单的解析方法是什么?我在解析这些文本时有哪些选择?
我的想法是调用数据库以获取邮政编码,如果找到邮政编码,那么它将是全名和街道地址的分隔符。
如果用户邮政编码错误,我会发送一条消息,通知他提供的数据格式无效。
答案 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
希望这在某种程度上有所帮助。