如何分割这个字符串,其中__是分隔符

MATCHES__STRING

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


有关专门针对空格进行拆分,请参见如何将字符串拆分为单词列表?。

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

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


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

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

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

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

for row in csv.reader( lines ):
    ...

当你在字符串中有两个或更多的元素(在下面的例子中有三个),那么你可以用逗号分隔这些项:

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

在这行代码之后,这三个变量的值将来自变量ev的三个部分。

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

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

然后,对变量进行拆分运算

date的值为Sa。, 23岁。Marz 时间的价值是19:00 event_name的值为Klavier + Orchester: SPEZIAL


对于Python 3.8,你实际上不需要get_text方法,你可以使用ev.split("@"),因为实际上get_text方法会抛出一个at .错误。 如果你有一个字符串变量,例如:

filename = 'file/foo/bar/fox'

你可以像上面评论中建议的那样,用逗号将其分割成不同的变量,但需要更正:

W, X, Y, Z = filename.split('_') 
W = 'file' 
X = 'foo'
Y = 'bar'
Z = 'fox'

除了split和rsplit,还有partition/rpartition。它分离字符串一次,但问题被问到的方式,它也可以适用。

例子:

>>> "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

时间线是基于这个答案的