Может показаться, что найти подстроку в 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. Поэтому, если вы не предоставите один из его аргументов и не введете ':', он будет использовать значение по умолчанию.