Виведіть перші 100 символів у рядку


108

Можливо, може знайти функцію підрядки в python.

Скажіть, я хочу вивести перші 100 символів у рядку, як це зробити?

Я також хочу це зробити безпечно, мірячи, якщо рядок має 50 символів, вона не повинна виходити з ладу.



1
Що ви маєте на увазі під "персонажами"? Кодові точки, клафери графем чи кодові одиниці? Нарізання рахуватиме кодові одиниці, що може не дати бажаного результату.
Філіпп

Відповіді:


168
print my_string[0:100]

5
Він також працює для рядків, коротших за 100, наприклад print 'foo'[:100](зауважте, що len('foo')це 3, тож навіть коли foo[100]це не працює)
Родріго Лагуна,

67

З підручника python :

Індекси вироджених фрагментів обробляються витончено: занадто великий індекс замінюється розміром рядка , верхня межа менша ніж нижня межа повертає порожній рядок.

Так це безпечно у використанні x[:100].



7

Щоб відповісти на занепокоєння Філіпа (у коментарях), нарізка працює добре для рядків Unicode

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

Якщо ви хочете запустити вищезазначений код як сценарій, поставте цей рядок вгорі

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

Якщо ваш редактор не зберігає в utf-8, замініть правильне кодування


2
Не зневажуючи вашої відповіді, але є одна лише 24 букви грецькою мовою, ςі σце той самий лист :-)
paxdiablo

4
@paxdiablo, так! Я скопіював їх із сторінки wikipedia. Пощастило, я тоді не назвав змінну greek_alphabet:)
Джон Ла Руй

4

Нарізання масивів виконується за допомогою [first:last+1] .

Один трюк, який я, як правило, використовую дуже багато, - це вказати додаткову інформацію еліпсами. Отже, якщо у вашому полі сто символів, я б використав:

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

І так, я знаю (), що в цьому випадку для %оператора форматування це зайве , це просто мій стиль.


Я здогадуюсь, це означало як їжу для роздумів, але у випадку з ОП я б, мабуть, не пропонував би цього робити. У результаті вийде рядок, який вам доведеться перевірити на вміст для подальшого обрізання чи щось подібне. У цьому випадку я б міг би хотіти, щоб це число було змінним, а результат завжди був правильним, або число було виправлене, а обробка або створює щось значуще, або помилка, або повертається граціозно у разі відмови. Я не можу придумати багатьох випадків, окрім надання людської читаної інформації, де я хочу додати текст довільно до рядка.

3

Більшість попередніх прикладів створить виняток у випадку, якщо ваш рядок недостатньо довгий.

Інший підхід - використання 'yourstring'.ljust(100)[:100].strip().

Це дасть вам перші 100 символів. Ви можете отримати коротший рядок у випадку, якщо останні символи рядка є пробілами.


Дякую. Дивно, чому найкращі відповіді на stackoverflow не впізнаються та не змінюються легко.
Василь Муса

3

Форматування рядків за допомогою % допомогою чудового способу впоратися з цим. Ось кілька прикладів.

Код форматування '%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()доступна також. Ось документація для обох.


0
[start:stop:step]

Отже, якщо ви хочете взяти лише 100 перших символів, використовуйте your_string[0:100]або your_string[:100] Якщо ви хочете взяти лише символ у рівному положенні, використовуйте your_string[::2] «Значення за замовчуванням» для початку - 0, для зупинки - рядка рядка, а для кроку - 1. Отже коли ви не надаєте один із його і ставить «:», воно використовуватиме це значення за замовчуванням.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.