python - 在字符的第一次和最后一次出现时拆分?
问题描述
我有一个字符串列表(金额、地址、付款):
"44.53 54 orchard rd Cash"
"32.34 600 sprout brook lane Card"
我只是想从每个字符串中获取地址。在我看来,最好的解决方法是在第一次和最后一次出现空格时进行拆分。有没有办法做到这一点?
解决方案
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']
推荐阅读
- ocaml - 为什么 OCaml 使用异常而不是用 Sum Types 表示错误?
- entity-framework - Linq 实体框架返回值但不显示
- jenkins - Rundeck 的 HTTPS URL 在 Jenkins 中不起作用
- javascript - 全局过渡到“catch-all-do-cleanup-exit-nicely”状态
- python - 如何将 .txt 读入 Python 对象列表?
- javascript - 具有二维数组的状态
- c# - 在 OnPreRender 中调整骨骼大小不会为 Unity 中的当前相机调整大小
- responsive-design - 如何为不同的方向返回不同的视图?
- postgresql - 如何使用用户指定的时间和时区运行常规任务?
- android - 下载当前国家的离线地图 heremap sdk