python - str.split() 的拆分顺序是否有任何保证?

标签 python string python-2.7 split

根据 the Python 2.7 docs ,使用 str.split() 并指定 maxsplit 会将字符串拆分为 maxsplit 次。

但是,它从未明确指定这些拆分将从左到右执行。有相关函数str.rsplit()保证从右到左拆分排序。

除了通过 str.rsplit() 进行字符串反转之外,还有什么方法可以保证从左到右的拆分顺序?是否存在 str.split() 不使用从左到右顺序的情况?

最佳答案

如果您正在寻找使用 maxsplit 参数从左到右拆分的保证,您只需要查看内置的 python test suite .

摘录如下:

    self.checkequal(['a', 'b', 'c', 'd'], 'a|b|c|d', 'split', '|')
    self.checkequal(['a|b|c|d'], 'a|b|c|d', 'split', '|', 0)
    self.checkequal(['a', 'b|c|d'], 'a|b|c|d', 'split', '|', 1)
    self.checkequal(['a', 'b', 'c|d'], 'a|b|c|d', 'split', '|', 2)
    self.checkequal(['a', 'b', 'c', 'd'], 'a|b|c|d', 'split', '|', 3)
    self.checkequal(['a', 'b', 'c', 'd'], 'a|b|c|d', 'split', '|', 4)
    self.checkequal(['a', 'b', 'c', 'd'], 'a|b|c|d', 'split', '|',
                    sys.maxsize-2)
    self.checkequal(['a|b|c|d'], 'a|b|c|d', 'split', '|', 0)
    self.checkequal(['a', '', 'b||c||d'], 'a||b||c||d', 'split', '|', 2)
    self.checkequal(['abcd'], 'abcd', 'split', '|')
    self.checkequal([''], '', 'split', '|')
    self.checkequal(['endcase ', ''], 'endcase |', 'split', '|')
    self.checkequal(['', ' startcase'], '| startcase', 'split', '|')
    self.checkequal(['', 'bothcase', ''], '|bothcase|', 'split', '|')
    self.checkequal(['a', '', 'b\x00c\x00d'], 'a\x00\x00b\x00c\x00d', 'split', '\x00', 2)

从测试中可以明显看出,任何执行不同操作的实现都无法通过这些测试。

关于python - str.split() 的拆分顺序是否有任何保证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38148952/

相关文章:

python - Bamboo - Docker 镜像运行错误 - 连接被拒绝

python - 如何在Python中编写一个分割字符串并将其转换为字典的函数

java - 将文件中的字符串值解析为 float ,其中字符串包含逗号

python - 使用 Python 查找最长递增子序列的迭代解决方案

python - python中re中的findall模块

python - Django 管理站点 -- 查看路径 "admin/"at "/"

python - 如何在将 dicom 文件转换为 jpg 文件时设置窗口宽度和窗口中心

python-2.7 - NumPy 的 : Translating elements increases size of file by a lot (factor of 8)

python - 使 Tkinter Notebook 可拖动

c - 为什么我无法使用以下代码显示字符串?