在 Python 中按分隔符拆分字符串

Split a string by a delimiter in Python

提问人:Hulk 提问时间:8/13/2010 最后编辑:bad_coderHulk 更新时间:5/20/2023 访问量:501873

问:

如何拆分此字符串,分隔符在哪里__

MATCHES__STRING

要获得 的输出 ?['MATCHES', 'STRING']


有关专门拆分空格的信息,请参阅如何将字符串拆分为单词列表?

若要提取第一个分隔符之前的所有内容,请参阅首次出现时拆分

要提取最后一个分隔符之前的所有内容,请参阅 python 中的分区字符串并获取冒号后最后一个段的值

Python 字符串 列表 拆分

评论

6赞 getekha 8/13/2010
docs.python.org/library/stdtypes.html#str.split
9赞 Tony Veijalainen 8/13/2010
值得阅读 python 标准文档,并尝试了解其他人制作的一些程序,以开始掌握 Python 的基础知识。练习和复制/修改是学习语言的好工具。

答:

398赞 adamk 8/13/2010 #1

您可以使用 str.split 方法:string.split('__')

>>> "MATCHES__STRING".split("__")
['MATCHES', 'STRING']

评论

1赞 EndenDragon 6/27/2016
我想知道,第一个示例(仅使用 split())和第二个示例(带有 for 循环)之间有什么区别?
4赞 Sébastien Vercammen 6/29/2016
@EndenDragon for 循环将自动应用并返回两端没有空格的匹配列表。细节决定成败。x.strip()
1赞 Aran-Fey 10/9/2018
嘿,由于这是一个非常受欢迎的问题,我对其进行了编辑,只问了 1 个特定问题,并删除了分隔符周围有空格的部分,因为不清楚 OP 甚至预期会发生什么(因为问题中从来没有问题)。我认为问题(和答案)以这种方式更有用,但如果您不同意,请随时回滚所有编辑。
0赞 Timo 3/15/2022
通常,您只需要字符串的一部分。第一个得到它,等等。splitted'match'.split('delim')[0]
4赞 Katriel 8/13/2010 #2

您可能对 csv 模块感兴趣,该模块专为逗号分隔文件而设计,但可以轻松修改以使用自定义分隔符。

import csv
csv.register_dialect( "myDialect", delimiter = "__", <other-options> )
lines = [ "MATCHES__STRING" ]

for row in csv.reader( lines ):
    ...
2赞 Sergey Nasonov 3/5/2019 #3

当字符串中有两个或多个元素时(在下面的示例中有三个),则可以使用逗号来分隔这些项目:

date, time, event_name = ev.get_text(separator='@').split("@")

在完成这一行代码之后,三个变量将具有变量 的三个部分的值。ev

因此,如果变量包含此字符串,并且我们应用分隔符:ev@

Sa., 23. März@19:00@Klavier + Orchester: SPEZIAL

然后,在操作变量之后split

  • date将有价值Sa., 23. März
  • time将有价值19:00
  • event_name将有价值Klavier + Orchester: SPEZIAL

评论

0赞 Gino Mempin 2/4/2022
"然后你可以用逗号“这叫做解压列表
1赞 Gnai 9/8/2021 #4

对于 Python 3.8,您实际上不需要该方法,您可以直接使用 ,事实上该方法会抛出一个 att. 错误。 因此,如果您有一个字符串变量,例如:get_textev.split("@")get_text

filename = 'file/foo/bar/fox'

您可以按照上面的评论中的建议将其拆分为带有逗号的不同变量,但要进行更正:

W, X, Y, Z = filename.split('_') 
W = 'file' 
X = 'foo'
Y = 'bar'
Z = 'fox'
3赞 topin89 4/11/2022 #5

除了 和 之外,还有 /。它分隔字符串一次,但提出问题的方式也可能适用。splitrsplitpartitionrpartition

例:

>>> "MATCHES__STRING".partition("__")
('MATCHES', '__', 'STRING')

>>> "MATCHES__STRING".partition("__")[::2]
('MATCHES', 'STRING')

然后快一点:split("_",1)

$ python -m timeit "'validate_field_name'.split('_', 1)[-1]"
2000000 loops, best of 5: 136 nsec per loop

$ python -m timeit "'validate_field_name'.partition('_')[-1]"
2000000 loops, best of 5: 108 nsec per loop

Timeit 线基于这个答案