>> val=s.split()>>> print val['MS', 'Dhoni', 'cricket', 'captain', '10000']Но я ожидаю, что код в следующем порядке:['MS Dhoni', 'cr" />

разбить строку данных с ограничением

python split

66 просмотра

1 ответ

Когда мне нужно разделить строку данных, я получаю следующий результат:

>>> s="MS Dhoni cricket captain 10000"
>>> val=s.split()
>>> print val
['MS', 'Dhoni', 'cricket', 'captain', '10000']

Но я ожидаю, что код в следующем порядке:

['MS Dhoni', 'cricket', 'captain', '10000']

Хотя в определенной позиции есть место, его нужно пропустить. Как я могу изменить код?

Автор: Linus Shenoy Источник Размещён: 08.11.2019 10:59

Ответы (1)


2 плюса

Этот код делает то, что вы хотите

import re

s="MS Dhoni cricket captain 10000"

print(re.split("\s(?=[a-z0-9])",s))

выход:

['MS Dhoni', 'cricket', 'captain', '10000']

Объяснение: разделить по пробелам, но только если за ним следует строчная буква или цифра (не используется в операции разделения благодаря ?=конструкции (просмотр вперед)

НО это обман: был MS Dhoniбы в середине строки, это не сработало бы. Вы предполагаете, что python знает, как читать различие (Mr, ...) или группировать слова, содержащие только заглавные буквы вместе со следующим словом. Это только в вашем уме.

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

Автор: Jean-François Fabre Размещён: 20.08.2016 07:03
Вопросы из категории :
32x32