如何分割这个字符串,其中__是分隔符
__
MATCHES__STRING
获取['MATCHES', 'STRING']的输出?
['MATCHES', 'STRING']
你可以使用str.split方法
str.split
>>> "MATCHES__STRING".split("__") ['MATCHES', 'STRING']
你可能会对csv模块感兴趣,它是为逗号分隔的文件设计的,但可以很容易地修改为使用自定义分隔符。
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
因此,如果变量ev包含这个字符串,我们应用分隔符@:
@
Sa., 23. März@19:00@Klavier + Orchester: SPEZIAL
然后,在split操作之后,变量
split
date
Sa., 23. März
time
19:00
event_name
Klavier + Orchester: SPEZIAL
get_text
ev.split("@")
filename = 'file/foo/bar/fox'
你可以像上面评论中建议的那样,用逗号将其分割成不同的变量,但需要更正:
W, X, Y, Z = filename.split('_') W = 'file' X = 'foo' Y = 'bar' Z = 'fox'
除了split和rsplit,还有partition/rpartition。它分离了字符串一次,但问题被问到的方式,它也可以适用。
rsplit
partition
rpartition
例子:
>>> "MATCHES__STRING".partition("__") ('MATCHES', '__', 'STRING') >>> "MATCHES__STRING".partition("__")[::2] ('MATCHES', 'STRING')
并且比split("_",1)快一点:
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
时间线基于这个答案