首页 > 解决方案 > 在字符的第一次和最后一次出现时拆分?

问题描述

我有一个字符串列表(金额、地址、付款):

"44.53 54 orchard rd Cash"
"32.34 600 sprout brook lane Card"

我只是想从每个字符串中获取地址。在我看来,最好的解决方法是在第一次和最后一次出现空格时进行拆分。有没有办法做到这一点?

标签: python

解决方案


Pythonsplit函数定义如下:str.split(sep=None, maxsplit=-1).

同样,有str.rsplit(sep=None, maxsplit=-1).

这意味着您可以只拆分开头和结尾:

>>> s = "44.53 54 orchard rd Cash"
>>> s.split(maxsplit=1)
['44.53', '54 orchard rd Cash']
>>> s.rsplit(maxsplit=1)
['44.53 54 orchard rd', 'Cash']

然后,要将字符串简单地拆分为 3,您可以编写一个简单的函数:

>>> def purchase_parts(purchase):
...     lsplit = purchase.split(maxsplit=1)
...     rsplit = lsplit[1].rsplit(maxsplit=1)
...     return (lsplit[0], rsplit[0], rsplit[1])
... 
>>> purchase_parts("44.53 54 orchard rd Cash")
('44.53', '54 orchard rd', 'Cash')
>>> purchase_parts("32.34 600 sprout brook lane Card")
('32.34', '600 sprout brook lane', 'Card')

尽管如此,我还是建议切换到分隔值列表,因为这样您就可以使用该分隔符进行拆分,还可以直接支持导入/导出 csv 格式(逗号分隔值)文件。

手动解决方案:

>>> [p.strip() for p in "32.34, 600 sprout brook lane, Card".split(',')]
['32.34', '600 sprout brook lane', 'Card']

推荐阅读