Нужна помощь с операциями строки/нарезки Python

StackOverflow https://stackoverflow.com/questions/1128431

  •  13-09-2019
  •  | 
  •  

Вопрос

Это очень новый вопрос, и мне, вероятно, проголосуют за него, но, честно говоря, я не смог найти ответ после часа поиска в 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())
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top