Нарезка строки в Python - PullRequest
       3

Нарезка строки в Python

1 голос
/ 12 декабря 2010

Когда нам нужно нарезать строку в определенном месте, нам нужно знать индекс, откуда мы хотим.

Например, в строке:

>>> s = 'Your ID number is: 41233'

Я хочу нарезать строку, начиная с :, и получить номер.

Конечно, я могу посчитать , по какому индексу :, а затем нарезать, но действительно ли это хороший подход?

Конечно, я могу сделать s.index(':'). Но это был бы дополнительный шаг, поэтому я придумал что-то вроде:

>>> print s[(s.index(':')+2):]
41233

Но почему-то мне не нравится его внешний вид.

Итак, мой вопрос, учитывая длинную строку, которую вы хотите нарезать, как найти указатель, откуда начать нарезку наиболее простым и читаемым способом? Если есть способ сделать это устно, я бы хотел знать это.

Ответы [ 6 ]

3 голосов
/ 12 декабря 2010
text, sep, number = 'Your ID number is: 41233'.partition(':')
print number

тоже работает.Но он не завершится ошибкой, если разделитель отсутствует в строке.

Эта распаковка работает и для split:

text, number = 'Your ID number is: 41233'.split(':',1)
3 голосов
/ 12 декабря 2010

Возможно, вы могли бы использовать split():

>>> s = 'Your ID number is: 41233'
>>> print s.split(":")[1].strip()
41233
1 голос
/ 12 декабря 2010

Другой подход - 'Your ID number is: 41233'.split(':')[1].strip().

0 голосов
/ 03 декабря 2012

Недавно наткнулся на раздел

string = "Your ID number is: 41233"

string = string.partition(':')

print string[2]
0 голосов
/ 13 декабря 2010

Я бы вообще не использовал нарезку, если бы у вас не было другой веской причины.Вместо этого это звучит как идеальная работа для re модуля регулярных выражений в стандартной библиотеке.Вот пример использования его для решения вашей проблемы:

import re
compile_obj = re.compile(r'Your ID number is:\s(?P<ID>\d+)')

s = 'Your ID number is: 41233'
match_obj = compile_obj.search(s)
if match_obj:
    print match_obj.group('ID')
# 41233
0 голосов
/ 12 декабря 2010

Итак, мой вопрос, учитывая длинную строку, которую вы хотите нарезать, как найти индекс, откуда начать нарезку самым простым и читаемым способом?

Когда «с чего начать нарезку» - это конкретный символ, вы этого не делаете; вместо этого вы просто, как Python, переводите строку split с этим символом в качестве разделителя или partition в биты до / в / после символа, как в других ответах. (split может разбить строку на несколько частей, если найдено несколько разделителей; partition всегда даст три части, даже если символа там нет вообще.)

Если есть способ сделать это устно, я хотел бы знать это.

Я действительно не думаю, что вы имеете в виду " устно ". :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...