Может показаться, что можно найти функцию подстроки в python.
Скажем, я хочу вывести первые 100 символов в строке, как я могу это сделать?
Я также хочу сделать это безопасно, потому что если строка составляет 50 символов, она не должна завершиться неудачей.
Ответы:
источник
print 'foo'[:100]
(обратите внимание, чтоlen('foo')
это 3, поэтому, даже еслиfoo[100]
не работает, он работает)Из учебника python :
Так что безопасно использовать
x[:100]
.источник
Легко:
источник
Чтобы ответить на беспокойство Филиппа (в комментариях), нарезка работает и для строк Unicode.
Если вы хотите запустить приведенный выше код как скрипт, поместите эту строку вверху
Если ваш редактор не сохраняет в utf-8, замените правильную кодировку
источник
ς
иσ
это одна и та же буква :-)greek_alphabet
:)Нарезка массивов выполняется с помощью
[first:last+1]
.Один трюк, который я часто использую, - это указывать дополнительную информацию с помощью эллипсов. Итак, если ваше поле составляет сто символов, я бы использовал:
И да, я знаю,
()
что в данном случае для%
оператора форматирования это лишнее , это просто мой стиль.источник
Большинство предыдущих примеров вызовут исключение, если ваша строка недостаточно длинна.
Другой подход - использовать
'yourstring'.ljust(100)[:100].strip()
.Это даст вам первые 100 символов. Вы можете получить более короткую строку, если последние символы вашей строки являются пробелами.
источник
Использование форматирования строк
%
- отличный способ справиться с этим. Вот несколько примеров.Код форматирования
'%s'
преобразуется'12345'
в строку, но это уже строка.'%.3s'
указывает использовать только первые три символа.'%.7s'
говорит, что нужно использовать первые семь символов, но их всего пять. Нет проблем.'%7s'
использует до семи символов, заполняя пропущенные символы пробелами слева.'%-7s'
то же самое, кроме заполнения пропущенных символов справа.'%5.3'
говорит, что используйте первые три символа, но заполните его пробелами слева, чтобы всего пять символов.То же самое, кроме заливки справа.
Может обрабатывать несколько аргументов!
Если вам нужна еще большая гибкость,
str.format()
тоже доступно. Вот документация для обоих.источник
Итак, если вы хотите взять только 100 первых символов, используйте
your_string[0:100]
или.your_string[:100]
Если вы хотите взять только символ в четной позиции, используйтеyour_string[::2]
«Значения по умолчанию» для начала - 0, для остановки - длина строки и для шага - 1. Итак если вы не укажете один из них и поставите ':', он будет использовать его значение по умолчанию.источник