Вывод первых 100 символов в строке

Может показаться, что найти подстроку в python.

Скажем, я хочу вывести первые 100 символов в строке, как я могу это сделать?

Я также хочу сделать это безопасно, если в строке будет 50 символов, это не должно терпеть неудачу.

Ответ 1

print my_string[0:100]

Ответ 2

Из учебник python:

Дегенерированные индексы среза обрабатываются изящно: слишком большой индекс заменяется размером строки, верхняя граница меньше нижней bound возвращает пустую строку.

Таким образом, безопасно использовать x[:100].

Ответ 3

Легко:

print mystring[:100]

Ответ 4

Чтобы ответить на вопрос Филиппа (в комментариях), slicing работает нормально и для строк unicode

>>> greek=u"αβγδεζηθικλμνξοπρςστυφχψω"
>>> print len(greek)
25
>>> print greek[:10]
αβγδεζηθικ

Если вы хотите запустить вышеуказанный код как script, поместите эту строку в начало

# -*- coding: utf-8 -*-

Если ваш редактор не сохраняет в utf-8, замените правильную кодировку

Ответ 5

Нарезка массивов выполняется с помощью [first:last+1].

Один трюк, который я обычно использую, - это указать дополнительную информацию с эллипсами. Итак, если ваше поле составляет сто символов, я бы использовал:

if len(s) <= 100:
    print s
else:
    print "%s..."%(s[:97])

И да, я знаю, что () является излишним в этом случае для оператора форматирования %, это просто мой стиль.

Ответ 6

Большинство предыдущих примеров вызовет исключение, если ваша строка недостаточно длинная.

Другой подход - использовать 'yourstring'.ljust(100)[:100].strip().

Это даст вам первые 100 символов. Вы можете получить более короткую строку в случае, если ваша строка последних символов - это пробелы.

Ответ 7

Форматирование строки с использованием % - отличный способ справиться с этим. Вот несколько примеров.

>>> '%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(). Вот документация для обоих.

Ответ 8

[start:stop:step]

Поэтому, если вы хотите взять только 100 первых символов, используйте your_string[0:100] или your_string[:100] Если вы хотите, чтобы только символ занимал четную позицию, используйте your_string[::2]. "Значения по умолчанию" для начала равен 0, для stop - len строки и для шага - 1. Поэтому, если вы не предоставите один из его аргументов и не введете ':', он будет использовать значение по умолчанию.