首页 > 解决方案 > 在分隔符处拆分python字符串,但在特定的分隔符处

问题描述

有没有一种方法可以在不使用 for 循环的情况下拆分 python 字符串,该循环基本上将中间的字符串拆分到最近的分隔符。

像:

The cat jumped over the moon very quickly.

分隔符是空格,结果字符串是:

The cat jumped over
the moon very quickly.

我看到有一个count地方我可以看到那里有多少个空格(虽然看不到如何返回它们的索引)。然后我可以通过除以 2 来找到中间的那个,但是然后如何在这个索引处的这个分隔符上说拆分。Find 很接近,但它返回第一个索引(或使用 rfind 的右第一个索引)而不是找到“”的所有索引。我可能想多了。

标签: python

解决方案


这应该有效:

def split_text(text):
    middle = len(text)//2
    under = text.rfind(" ", 0, middle)
    over = text.find(" ", middle)
    if over > under and under != -1:
        return (text[:,middle - under], text[middle - under,:])
    else:
        if over is -1:
              raise ValueError("No separator found in text '{}'".format(text))
        return (text[:,middle + over], text[middle + over,:])

它不使用 for 循环,但可能使用 for 循环会有更好的性能。

通过引发错误来处理在整个字符串中找不到分隔符的情况,但可以更改raise ValueError()为您想要处理该情况的任何方式。


推荐阅读