Output 100 karakter pertama dalam sebuah string

108

Tampaknya dapat menemukan fungsi substring di python.

Katakanlah saya ingin mengeluarkan 100 karakter pertama dalam sebuah string, bagaimana saya bisa melakukan ini?

Saya ingin melakukannya dengan aman juga, artinya jika string adalah 50 karakter maka tidak boleh gagal.

Blankman
sumber
2
Tindak lanjut dari pertanyaan ini adalah: Primer yang baik untuk notasi irisan Python
Greg Hewgill
1
Apa yang Anda maksud dengan "karakter"? Poin kode, cluster grafik atau unit kode? Mengiris akan menghitung unit kode, yang mungkin tidak memberikan hasil yang diinginkan.
Philipp

Jawaban:

168
print my_string[0:100]
icktoofay
sumber
5
itu juga berfungsi untuk string yang lebih pendek dari 100, misalnya print 'foo'[:100](perhatikan bahwa len('foo')3, jadi meskipun foo[100]tidak berfungsi, itu berhasil)
Rodrigo Laguna
67

Dari tutorial python :

Indeks irisan yang terdegenerasi ditangani dengan baik: indeks yang terlalu besar diganti dengan ukuran string , batas atas yang lebih kecil dari batas bawah mengembalikan string kosong.

Sehingga aman digunakan x[:100].

czchen
sumber
27

Mudah:

print mystring[:100]
Arkady
sumber
7

Untuk menjawab kekhawatiran Philipp (di komentar), slicing juga bisa digunakan untuk string unicode

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

Jika Anda ingin menjalankan kode di atas sebagai skrip, letakkan baris ini di bagian atas

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

Jika editor Anda tidak menyimpan di utf-8, gantikan pengkodean yang benar

John La Rooy
sumber
2
Tidak meremehkan jawaban Anda, tetapi hanya ada 24 huruf dalam bahasa Yunani, ςdan σmerupakan huruf yang sama :-)
paxdiablo
4
@paxdiablo, doh! Saya menyalinnya dari halaman wikipedia. Beruntung saya tidak menyebutkan variabelnya greek_alphabetsaat itu :)
John La Rooy
4

Pemotongan array dilakukan dengan [first:last+1].

Salah satu trik yang cenderung sering saya gunakan adalah menunjukkan informasi tambahan dengan elipsis. Jadi, jika bidang Anda seratus karakter, saya akan menggunakan:

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

Dan ya, saya tahu ()tidak berguna dalam hal ini untuk %operator pemformatan, itu hanya gaya saya.

paxdiablo
sumber
Saya kira ini dimaksudkan sebagai bahan pemikiran, tetapi dalam kasus OP saya mungkin tidak akan menyarankan untuk melakukan itu. Hasilnya akan menjadi string yang harus Anda periksa kontennya untuk dipangkas lebih lanjut atau sesuatu seperti itu. Dalam hal ini saya akan membayangkan seseorang akan menginginkan nomor itu menjadi variabel, dan hasilnya selalu benar, atau nomor tersebut diperbaiki dan penanganannya menghasilkan sesuatu yang berarti, atau kesalahan atau mengembalikan dengan anggun jika terjadi kegagalan. Saya tidak bisa memikirkan banyak kasus, selain mengirimkan info yang dapat dibaca manusia, di mana saya ingin menambahkan teks secara sewenang-wenang ke string.
3

Sebagian besar contoh sebelumnya akan memunculkan pengecualian jika string Anda tidak cukup panjang.

Pendekatan lain adalah dengan menggunakan 'yourstring'.ljust(100)[:100].strip().

Ini akan memberi Anda 100 karakter pertama. Anda mungkin mendapatkan string yang lebih pendek jika karakter terakhir string Anda adalah spasi.

Julien Kieffer
sumber
Terima kasih. Aneh mengapa jawaban terbaik di stackoverflow tidak dikenali dan dipilih dengan mudah.
Basil Musa
3

Pemformatan string menggunakan %adalah cara terbaik untuk menangani ini. Berikut ini beberapa contohnya.

Kode pemformatan '%s'diubah '12345'menjadi string, tetapi itu sudah menjadi string.

>>> '%s' % '12345'

'12345'

'%.3s' menentukan untuk menggunakan hanya tiga karakter pertama.

>>> '%.3s' % '12345'

'123'

'%.7s'mengatakan untuk menggunakan tujuh karakter pertama, tetapi hanya ada lima. Tidak masalah.

>>> '%.7s' % '12345'

'12345'

'%7s' menggunakan hingga tujuh karakter, mengisi karakter yang hilang dengan spasi di sebelah kiri.

>>> '%7s' % '12345'

'  12345'

'%-7s' adalah hal yang sama, kecuali mengisi karakter yang hilang di sebelah kanan.

>>> '%-7s' % '12345'

'12345  '

'%5.3' mengatakan gunakan tiga karakter pertama, tetapi isi dengan spasi di sebelah kiri hingga total lima karakter.

>>> '%5.3s' % '12345'

'  123'

Hal yang sama kecuali isian di sebelah kanan.

>>> '%-5.3s' % '12345'

'123  '

Dapat menangani banyak argumen juga!

>>> 'do u no %-4.3sda%3.2s wae' % ('12345', 6789)

'do u no 123 da 67 wae'

Jika Anda membutuhkan lebih banyak fleksibilitas, str.format()tersedia juga. Berikut dokumentasi untuk keduanya.

OrangeSherbet
sumber
0
[start:stop:step]

Jadi Jika Anda ingin mengambil hanya 100 karakter pertama, gunakan your_string[0:100]atau your_string[:100] Jika Anda ingin mengambil hanya karakter pada posisi genap, gunakan your_string[::2] "nilai default" untuk start adalah 0, untuk stop - len string, dan untuk langkah - 1. Jadi ketika Anda tidak memberikan salah satu dari its dan put ':', itu akan menggunakan nilai defaultnya.

Szymek G
sumber