2014-09-08 1 views
-2

У меня трудное понимание str.partition() Функция в python. Я прочитал определение функции и обыскал в Интернете, не найдя объяснения, которое имеет смысл для меня.Объяснение str.partition() в python

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

Нужно углубленное, вероятно, низкоуровневое объяснение функции str.partition() в python.

+0

Это немного разочаровывает, когда проголосовали за серьезный вопрос. Я заявил, что я исследовал и не понял. Я чувствую, что мой вопрос очень ясен и может быть очень полезным в будущем для кого-то в той же лодке, что и я. – Keith

+0

Не принимайте это слишком лично. Вероятно, пустые голоса проистекают из-за отсутствия кода в вашем вопросе, хотя это сложно сказать наверняка. Голосование является личным выбором для каждого участника. В идеале, кто-то, кто голосует, должен дать комментарий, объясняющий, почему, но это не обязательно. –

ответ

1

Документов довольно ясно ...

Split the string at the first occurrence of sep, and return a 3-tuple containing the part before the separator, the separator itself, and the part after the separator. If the separator is not found, return a 3-tuple containing the string itself, followed by two empty strings.

Итак ...

>>> 'test'.partition('s') 
('te', 's', 't') 
>>> 'test'.partition('a') 
('test', '', '') 

Вы либо получите фронт, сплиттер характер, и хвост, или вы получите полную строку и два пустые строки (в зависимости от наличия или отсутствия символа раздела).

+0

WOW !! Огромное спасибо. По какой-то причине это дуло прямо над моей головой. Наверное, это то, что часы работы с кодом будут делать. Благодаря тонну! – Keith

+1

Это не объясняет, почему вы хотите использовать 's.partition (sep)' over 's.split (sep, 1)' (и наоборот). Во-первых, 'partition' позволяет вам сопоставлять разделитель. Что еще более важно, однако, 's.partition (sep)' всегда возвращает 3 значения (при этом последние два пустые, если 'sep' не был найден), тогда как' split' может возвращать либо 2 значения, либо 1 (если 'sep' wasn 't found), что означает, что вы можете написать 'first, sep, rest = s.partition (sep)', и он всегда будет успешным, а 'first, rest = s.split (sep, 1)' поднимет значение ValueError : для распаковки нужно больше 1 значения. – abarnert

+0

Я использую этот метод для редактирования '/ etc/network/interfaces'. Я использую 'port + 'inet" 'как' sep'. Так что действительно это будет 'eth8 inet'. Строка, которую я пытаюсь найти и изменить, будет 'iface eth8 inet static' и изменить' static' на 'dhcp'. Остается ли курсор сразу после того, где он нашел 'sep'? Я немного смущен кодом, который я принимаю. Это, конечно, не работает. – Keith

 Смежные вопросы

  • Нет связанных вопросов^_^