在角色的第一次和最后一次出现时分割?

2024-06-17 16:27:38 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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


Tags: 字符串列表地址空间cashrdcard金额
1条回答
网友
1楼 · 发布于 2024-06-17 16:27:38

您可能会执行以下操作:

line = "44.53 54 orchard rd Cash"
line_parts = line.split(" ")
address = " ".join(line_parts[1:-1])

它有点不整洁,而且对于行格式的更改来说肯定很脆弱,但是可以完成这项工作

网友
2楼 · 发布于 2024-06-17 16:27:38

您可以使用您的方法,在第一个和最后一个空格处拆分,但需要将其余空格(在中间)重新合并:

def get_address(s):
    s = s.split()
    return ' '.join(s[1:-1])
    # s[1:-1] will remove the first (amount) and the last (payment) values
    # ' '.join will then put back the spaces that were removed from the address by s.split

输入:

print(get_address("44.53 54 orchard rd Cash"))
print(get_address("32.34 600 sprout brook lane Cash"))

输出:

54 orchard rd
600 sprout brook lane
网友
3楼 · 发布于 2024-06-17 16:27:38

Python split函数的定义如下:^{}

同样,还有^{}

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

>>> 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']

相关问题 更多 >