Bagaimana cara memotong string hingga 75 karakter dalam Python?
Ini adalah bagaimana hal itu dilakukan dalam JavaScript:
var data="saddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddsaddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddsadddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd"
var info = (data.length > 75) ? data.substring[0,75] + '..' : data;
len(data) > 77
memperhitungkan titik ganda (tidak ada gunanya untuk memotong hanya karakter terakhir hanya untuk menggantinya dengan titik).Bahkan lebih pendek:
sumber
Yang lebih ringkas:
Jika kurang dari 75 karakter tidak akan ada perubahan.
sumber
Jika Anda menggunakan Python 3.4+, Anda dapat menggunakan
textwrap.shorten
dari pustaka standar:sumber
shorten()
memotong kata , bukan karakter tunggal. Saya mencari tetapi sepertinya tidak ada cara untuk mengkonfigurasishorten()
atauTextWrapper
contoh untuk klip karakter tunggal dan bukan kata-kata.Untuk solusi Django (yang belum disebutkan dalam pertanyaan):
Lihat kode sumber Truncator untuk memahami masalahnya: https://github.com/django/django/blob/master/django/utils/text.py#L66
Mengenai pemotongan dengan Django: Django HTML pemotongan
sumber
Anda bisa menggunakan ini satu-liner:
sumber
[:n]
disebut sehingga saya bisa mencarinya di dokumentasi?Dengan regex:
String panjang terpotong:
String yang lebih pendek tidak pernah terpotong:
Dengan cara ini, Anda juga dapat "memotong" bagian tengah string, yang lebih bagus dalam beberapa kasus:
sumber
Metode ini tidak digunakan jika:
data[:75] + bool(data[75:]) * '..'
sumber
sumber
75
) menjadi variabel untuk menghindari ketidakkonsistenan.limit = 75; info = data[:limit] + '..' * (len(data) > limit)
Namun solusi lain. Dengan
True
danFalse
Anda mendapatkan sedikit umpan balik tentang tes di akhir.sumber
Ini hanya di:
sumber
sumber
Anda tidak dapat benar-benar "memotong" string Python seperti Anda dapat melakukan string C yang dialokasikan secara dinamis. String dalam Python tidak dapat diubah. Yang bisa Anda lakukan adalah mengiris string seperti yang dijelaskan dalam jawaban lain, menghasilkan string baru yang hanya berisi karakter yang ditentukan oleh offset irisan dan langkah. Dalam beberapa kasus (tidak praktis) ini bisa sedikit menjengkelkan, seperti ketika Anda memilih Python sebagai bahasa wawancara Anda dan pewawancara meminta Anda untuk menghapus karakter duplikat dari string di tempat. Doh.
sumber
sumber
Tidak perlu untuk ekspresi reguler tetapi Anda ingin menggunakan pemformatan string daripada penggabungan string dalam jawaban yang diterima.
Ini mungkin cara Pythonic paling kanonik untuk memotong string
data
pada 75 karakter.sumber
saddddddd...
string Anda berubah menjadi111111...
:) Saya tahu ini adalah kesalahan ketik copy-paste, dan saya setuju dengan Anda tentang ekspresi reguler.Inilah fungsi yang saya buat sebagai bagian dari kelas String baru ... Ini memungkinkan menambahkan akhiran (jika string berukuran setelah pemangkasan dan menambahkannya cukup lama - meskipun Anda tidak perlu memaksakan ukuran absolut)
Saya sedang dalam proses mengubah beberapa hal di sekitar sehingga ada beberapa biaya logika yang tidak berguna (jika _truncate ... misalnya) di mana itu tidak lagi diperlukan dan ada pengembalian di atas ...
Tapi, itu masih berfungsi baik untuk memotong data ...
sumber
sumber