在Python中按分隔符分割字符串

253 投票
5 回答
512599 浏览
提问于 2025-04-16 02:44

如何在这个字符串中用 __ 作为分隔符进行拆分

MATCHES__STRING

这样才能得到 ['MATCHES', 'STRING'] 的结果呢?


如果你想专门在空格处拆分,可以查看 如何将字符串拆分成单词列表?

如果你想提取第一个分隔符之前的所有内容,可以查看 在第一次出现时拆分

如果你想提取最后一个分隔符之前的所有内容,可以查看 在Python中分割字符串并获取冒号后最后一段的值

5 个回答

4

除了 splitrsplit,还有 partitionrpartition。它们的作用是把字符串分开一次,不过根据提问的方式,这个方法也可能适用。

举个例子:

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

撰写回答