Вопрос-Ответ

Split a string by a delimiter in Python

Разбиение строки по разделителю в Python

Как разделить эту строку, где __ является разделителем

MATCHES__STRING

Чтобы получить результат ['MATCHES', 'STRING']?


Для разделения конкретно по пробелам см. Как мне разделить строку на список слов?.

Чтобы извлечь все, что находится перед первым разделителем, см. раздел Разделение при первом вхождении.

Чтобы извлечь все, что находится перед последним разделителем, см. Раздел строки в python и получите значение последнего сегмента после двоеточия.

Переведено автоматически
Ответ 1

Вы можете использовать метод str.split: string.split('__')

>>> "MATCHES__STRING".split("__")
['MATCHES', 'STRING']
Ответ 2

Возможно, вас заинтересует csv модуль, который предназначен для файлов, разделенных запятыми, но может быть легко изменен для использования пользовательского разделителя.

import csv
csv.register_dialect( "myDialect", delimiter = "__", <other-options> )
lines = [ "MATCHES__STRING" ]

for row in csv.reader( lines ):
...
Ответ 3

Кроме 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

Для Python 3.8 вам на самом деле не нужен get_text метод, вы можете просто использовать ev.split("@"), на самом деле get_text метод выдает att. ошибка. Итак, если у вас есть строковая переменная, например:

filename = 'file/foo/bar/fox'

Вы можете просто разделить ее на разные переменные с помощью запятых, как предложено в комментарии выше, но с исправлением:

W, X, Y, Z = filename.split('_') 
W = 'file'
X = 'foo'
Y = 'bar'
Z = 'fox'
python string list