[英]Split a string by a delimiter in python
如何拆分此字符串,其中__
是分隔符
MATCHES__STRING
要获得['MATCHES', 'STRING']
的 output 吗?
您可以使用
str.split<\/code><\/a>方法:
string.split('__')<\/code>
>>> "MATCHES__STRING".split("__")
['MATCHES', 'STRING']
您可能对
csv<\/code><\/a>模块感兴趣,该模块专为逗号分隔文件而设计,但可以轻松修改以使用自定义分隔符。
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
然后,在split
操作之后,变量
date
的值为Sa., 23. März
time
将具有价值19:00
event_name
的值为Klavier + Orchester: SPEZIAL
对于 Python 3.8,您实际上不需要
get_text<\/code>方法,您可以使用
ev.split("@")<\/code> ,事实上
get_text<\/code>方法正在抛出一个 att。
错误。 因此,如果您有一个字符串变量,例如:
filename = 'file/foo/bar/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
Timeit 行基于此答案
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.