Можливо, може знайти функцію підрядки в python.
Скажіть, я хочу вивести перші 100 символів у рядку, як це зробити?
Я також хочу це зробити безпечно, мірячи, якщо рядок має 50 символів, вона не повинна виходити з ладу.
Можливо, може знайти функцію підрядки в python.
Скажіть, я хочу вивести перші 100 символів у рядку, як це зробити?
Я також хочу це зробити безпечно, мірячи, якщо рядок має 50 символів, вона не повинна виходити з ладу.
Відповіді:
print my_string[0:100]
print 'foo'[:100](зауважте, що len('foo')це 3, тож навіть коли foo[100]це не працює)
Індекси вироджених фрагментів обробляються витончено: занадто великий індекс замінюється розміром рядка , верхня межа менша ніж нижня межа повертає порожній рядок.
Так це безпечно у використанні x[:100].
Щоб відповісти на занепокоєння Філіпа (у коментарях), нарізка працює добре для рядків Unicode
>>> greek=u"αβγδεζηθικλμνξοπρςστυφχψω"
>>> print len(greek)
25
>>> print greek[:10]
αβγδεζηθικ
Якщо ви хочете запустити вищезазначений код як сценарій, поставте цей рядок вгорі
# -*- coding: utf-8 -*-
Якщо ваш редактор не зберігає в utf-8, замініть правильне кодування
ςі σце той самий лист :-)
greek_alphabet:)
Нарізання масивів виконується за допомогою [first:last+1] .
Один трюк, який я, як правило, використовую дуже багато, - це вказати додаткову інформацію еліпсами. Отже, якщо у вашому полі сто символів, я б використав:
if len(s) <= 100:
print s
else:
print "%s..."%(s[:97])
І так, я знаю (), що в цьому випадку для %оператора форматування це зайве , це просто мій стиль.
Більшість попередніх прикладів створить виняток у випадку, якщо ваш рядок недостатньо довгий.
Інший підхід - використання
'yourstring'.ljust(100)[:100].strip().
Це дасть вам перші 100 символів. Ви можете отримати коротший рядок у випадку, якщо останні символи рядка є пробілами.
Форматування рядків за допомогою % допомогою чудового способу впоратися з цим. Ось кілька прикладів.
Код форматування '%s'перетворюється '12345'на рядок, але це вже рядок.
>>> '%s' % '12345'
'12345'
'%.3s' вказує використовувати лише перші три символи.
>>> '%.3s' % '12345'
'123'
'%.7s'говорить про використання перших семи символів, але їх є лише п’ять. Нема проблем.
>>> '%.7s' % '12345'
'12345'
'%7s' використовує до семи символів, заповнюючи пропущені символи пробілами зліва.
>>> '%7s' % '12345'
' 12345'
'%-7s' те саме, за винятком заповнення відсутніх символів праворуч.
>>> '%-7s' % '12345'
'12345 '
'%5.3' говорить, використовуйте перші три символи, але заповніть їх пробілами зліва до загальної кількості п'яти символів.
>>> '%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, для зупинки - рядка рядка, а для кроку - 1. Отже коли ви не надаєте один із його і ставить «:», воно використовуватиме це значення за замовчуванням.