Нужна помощь с операциями строки/нарезки Python
Вопрос
Это очень новый вопрос, и мне, вероятно, проголосуют за него, но, честно говоря, я не смог найти ответ после часа поиска в 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]
Я не совсем уверен, как это сделать, если у вас есть динамическая строка, в которой вы не знаете, где заканчивается каждое слово.
Я был бы очень признателен за подсказки о том, какие функции/методы мне следует прочитать, чтобы заархивировать это.Заранее спасибо.
Решение
Почему разделение является излишним?
verb, title, definition = myString.split (' ', 2)
Другие советы
Если между вашей командой, заголовком и определением есть пробелы, вы можете:
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.
Если вы действительно не хотите использовать разделение, вы можете использовать регулярные выражения:
import re
m = re.match('(/S+)/s*(/S+)/s*(.*)')
cmd = m.group(1)
title = m.group(2)
definition = m.group(3)
Выбранный ответ (после PEP8ing):
verb, title, definition = my_string.split(' ', 2)
разбивается на одно пространство.Вероятно, лучше разделить пробелы на отдельные пробелы, на случай, если по обе стороны от заголовка есть табуляции или несколько пробелов:
verb, title, definition = my_string.split(None, 2)
Также рассмотрите возможность нормализации пробелов в определении:
definition = ' '.join(definition.split())