在字符串中分隔符出现last次时,建议使用哪种Python惯用法来拆分字符串?例子:

# instead of regular split
>> s = "a,b,c,d"
>> s.split(",")
>> ['a', 'b', 'c', 'd']

# ..split only on last occurrence of ',' in string:
>>> s.mysplit(s, -1)
>>> ['a,b,c', 'd']

mysplit接受第二个参数,即要拆分的分隔符的出现.与常规列表索引一样,-1表示从末尾算起的最后一个.如何做到这一点?

推荐答案

.rsplit().rpartition()代替:

s.rsplit(',', 1)
s.rpartition(',')

str.rsplit()允许您指定要拆分的次数,而str.rpartition()仅拆分一次,但始终返回固定数量的元素(前缀、分隔符和后缀),并且对于单个拆分情况速度更快.

演示:

>>> s = "a,b,c,d"
>>> s.rsplit(',', 1)
['a,b,c', 'd']
>>> s.rsplit(',', 2)
['a,b', 'c', 'd']
>>> s.rpartition(',')
('a,b,c', ',', 'd')

这两种方法都从字符串的右侧开始拆分;通过将最大值设为str.rsplit()作为第二个参数,您可以只拆分最右侧的匹配项.

Python相关问答推荐

try 从网站获取表(ValueRight:如果使用所有纯量值,则必须传递索引)

这些变量是否相等,因为它们引用相同的实例,尽管它们看起来应该具有不同的值?

如何最好地处理严重级联的json

只需使用Python在图像中保留 colored颜色 范围区域

零填充2D数组上的Numpy切片

具有多个组的条形图的不同y标度

如果我已经使用了time,如何要求Python在12秒后执行另一个操作.sleep

不允许AMBIMA API请求方法

跟踪我已从数组中 Select 的样本的最有效方法

使用polars .滤镜进行切片速度比pandas .loc慢

分组数据并删除重复数据

使用numpy提取数据块

在Polars(Python库)中将二进制转换为具有非UTF-8字符的字符串变量

为什么sys.exit()不能与subproccess.run()或subprocess.call()一起使用

如何在Python中获取`Genericums`超级类型?

为什么numpy. vectorize调用vectorized函数的次数比vector中的元素要多?

为什么np. exp(1000)给出溢出警告,而np. exp(—100000)没有给出下溢警告?

解决调用嵌入式函数的XSLT中表达式的语法移位/归约冲突

找到相对于列表索引的当前最大值列表""

OpenCV轮廓.很难找到给定图像的所需轮廓