繁体   English   中英

通过 python 中的分隔符拆分字符串

[英]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'

除了splitrsplit ,还有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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM