Может показаться, что найти подстроку в python.
Скажем, я хочу вывести первые 100 символов в строке, как я могу это сделать?
Я также хочу сделать это безопасно, если в строке будет 50 символов, это не должно терпеть неудачу.
Может показаться, что найти подстроку в python.
Скажем, я хочу вывести первые 100 символов в строке, как я могу это сделать?
Я также хочу сделать это безопасно, если в строке будет 50 символов, это не должно терпеть неудачу.
print my_string[0:100]
Из учебник python:
Дегенерированные индексы среза обрабатываются изящно: слишком большой индекс заменяется размером строки, верхняя граница меньше нижней bound возвращает пустую строку.
Таким образом, безопасно использовать x[:100]
.
Легко:
print mystring[:100]
Чтобы ответить на вопрос Филиппа (в комментариях), slicing работает нормально и для строк unicode
>>> greek=u"αβγδεζηθικλμνξοπρςστυφχψω"
>>> print len(greek)
25
>>> print greek[:10]
αβγδεζηθικ
Если вы хотите запустить вышеуказанный код как script, поместите эту строку в начало
# -*- coding: utf-8 -*-
Если ваш редактор не сохраняет в utf-8, замените правильную кодировку
Нарезка массивов выполняется с помощью [first:last+1]
.
Один трюк, который я обычно использую, - это указать дополнительную информацию с эллипсами. Итак, если ваше поле составляет сто символов, я бы использовал:
if len(s) <= 100:
print s
else:
print "%s..."%(s[:97])
И да, я знаю, что ()
является излишним в этом случае для оператора форматирования %
, это просто мой стиль.
Большинство предыдущих примеров вызовет исключение, если ваша строка недостаточно длинная.
Другой подход - использовать
'yourstring'.ljust(100)[:100].strip()
.
Это даст вам первые 100 символов. Вы можете получить более короткую строку в случае, если ваша строка последних символов - это пробелы.
Форматирование строки с использованием %
- отличный способ справиться с этим. Вот несколько примеров.
>>> '%s' % '12345'
'12345'
>>> '%.3s' % '12345'
'123'
>>> '%.7s' % '12345'
'12345'
>>> '%7s' % '12345'
' 12345'
>>> '%-7s' % '12345'
'12345 '
>>> '%5.3s' % '12345'
' 123'
>>> '%-5.3s' % '12345'
'123 '
>>> 'do u no %-4.3sda%3.2s wae' % ('12345',6789)
'do u no 123 da 67 wae'
Если вам требуется еще больше гибкости, также доступна str.format()
. Вот документация для обоих.
[start:stop:step]
Поэтому, если вы хотите взять только 100 первых символов, используйте your_string[0:100]
или your_string[:100]
Если вы хотите, чтобы только символ занимал четную позицию, используйте your_string[::2]
. "Значения по умолчанию" для начала равен 0, для stop - len строки и для шага - 1. Поэтому, если вы не предоставите один из его аргументов и не введете ':', он будет использовать значение по умолчанию.