Нужна помощь с операциями с питоном / строкой - PullRequest
2 голосов
/ 15 июля 2009

Это очень новый вопрос, и я, вероятно, получу за него отрицательный ответ, но я, честно говоря, не смог найти ответ по крайней мере после часа поиска в Google.Я научился нарезать строки на основе «точных мест», где вы должны точно знать, где заканчивается слово.Но я не нашел ни одной статьи, которая объясняла бы, как это сделать на «нестатических» строках, которые могут измениться.

Также я не хочу использовать string.split () в этом случае, так как это немного излишне для чегомне нужно.

У меня в основном такая строка:

myString = "!save python Python is a high-level object oriented language created by Guido van Rossum."
# the format is !save [singleword] [definition]

Мне нужно "нарезать" эту строку, но я не могу найти правильный способ сделать это.

Мне нужно сохранить в переменную заголовок (в данном случае python) и определение этой строки.Примерно так:

title = myString[1]
definition = myString[everything after string[1]

Я не совсем уверен, как это сделать, когда у вас есть динамическая строка, в которой вы не знаете, где заканчивается каждое слово.

Я был бы очень признателен за некоторые указатели накакие функции / методы я должен прочитать, чтобы архивировать это.Заранее спасибо.

Ответы [ 3 ]

12 голосов
/ 15 июля 2009

Почему сплит перебор?

verb, title, definition = myString.split (' ', 2)
2 голосов
/ 15 июля 2009

Выбранный ответ (после PEP8ing):

verb, title, definition = my_string.split(' ', 2)

разбивается на один пробел. Вероятно, лучше выбрать разбивку на пробелы, на случай, если по обе стороны от заголовка есть табуляции или несколько пробелов:

verb, title, definition = my_string.split(None, 2)

Также рассмотрите возможность нормализации пробелов в определении:

definition = ' '.join(definition.split())
2 голосов
/ 15 июля 2009

Если между вашей командой, заголовком и определением есть пробелы, вы можете:

wordList = myString.split()
cmd = wordList[0] # !save
title = wordList[1] # python
definition = ' '.join(wordList[2:])  # Python is a high-level object oriented language created by Guido van Rossum.

Если вы действительно не хотите использовать split, вы можете использовать регулярные выражения:

import re
m = re.match('(/S+)/s*(/S+)/s*(.*)')
cmd = m.group(1)
title = m.group(2)
definition = m.group(3)
...