在Python中按分隔符分割字符串
如何在这个字符串中用 __
作为分隔符进行拆分
MATCHES__STRING
这样才能得到 ['MATCHES', 'STRING']
的结果呢?
如果你想专门在空格处拆分,可以查看 如何将字符串拆分成单词列表?。
如果你想提取第一个分隔符之前的所有内容,可以查看 在第一次出现时拆分。
如果你想提取最后一个分隔符之前的所有内容,可以查看 在Python中分割字符串并获取冒号后最后一段的值。
5 个回答
4
除了 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
时间测试的结果是基于 这个回答
4
你可能会对csv
模块感兴趣。这个模块是专门用来处理以逗号分隔的文件的,但你也可以很简单地修改它,让它使用其他分隔符。
import csv
csv.register_dialect( "myDialect", delimiter = "__", <other-options> )
lines = [ "MATCHES__STRING" ]
for row in csv.reader( lines ):
...
401
你可以使用 str.split
这个方法来分割字符串,比如用 string.split('__')
这样的方式。
>>> "MATCHES__STRING".split("__")
['MATCHES', 'STRING']