在Python中基于常见分隔符切割字符串

3

我想要根据竖线分隔符切割以下字符串:

address = '1234 Broadway Ave | Los Angeles | CA | 94530'

我找到了第一块拼图:
street = address[:address.index('|')]
print(street)
1234 Broadway Ave

但我不清楚如何获取城市/州/邮政编码:

city = 
state = 
zip =

此外,有更好的方法来做这件事吗?使用正则表达式或类似的东西吗?我以前没有用过它...
谢谢!

2
如果您正在尝试使用不同的分隔符解析CSV数据,Python已经为您准备好了一切 - 9000
1个回答

7

您可以使用str.split()函数以'|'为分隔符获取每个项目,并使用str.strip()函数去除每个项目的前导和尾随空格:

address = '1234 Broadway Ave | Los Angeles | CA | 94530'

items = [x.strip() for x in address.split('|')]

print(items)

这将会产生:

['1234 Broadway Ave', 'Los Angeles', 'CA', '94530']

此外,您还可以使用map()方法来实现此功能:
items = list(map(str.strip, address.split('|')))

您还可以使用zip()将这些项分配给字典,代码如下:

contents = ["street", "city", "state", "zip"]
d = dict(zip(contents, items))
print(d)

这将给你以下结构:

{'street': '1234 Broadway Ave', 'city': 'Los Angeles', 'state': 'CA', 'zip': '94530'}

然后你可以通过仅调用键来访问此字典中的每个条目:

>>> d['street']
1234 Broadway Ave
>>> d['city']
Los Angeles
>>> d['state']
CA
>>> d['zip']
94530

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接