Bir dizedeki ilk 100 karakteri çıktılar


108

Python'da bir alt dize işlevi bulabilir.

Bir dizedeki ilk 100 karakteri çıkarmak istediğimi varsayalım, bunu nasıl yapabilirim?

Bunu da güvenli bir şekilde yapmak istiyorum, dizenin 50 karakter olması durumunda başarısız olmaması gerekir.



1
"Karakterler" ile ne demek istiyorsun? Kod noktaları, grafem kümeleri veya kod birimleri? Dilimleme, istenen sonucu vermeyebilecek kod birimlerini sayacaktır.
Philipp

Yanıtlar:


168
print my_string[0:100]

5
100'den kısa dizeler için de işe yarar, örneğin print 'foo'[:100]( len('foo')3 olduğuna dikkat edin , yani foo[100]çalışmadığında bile işe yarıyor)
Rodrigo Laguna

67

Gönderen piton öğretici :

Dejenere dilim endeksleri özenle işlenir: çok büyük bir dizin, dize boyutuyla değiştirilir , alt sınırdan daha küçük bir üst sınır boş bir dize döndürür.

Bu yüzden kullanmak güvenlidir x[:100].



7

Philipp'in endişesine cevap vermek için (yorumlarda), dilimleme unicode dizeleri için de uygundur.

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

Yukarıdaki kodu bir betik olarak çalıştırmak istiyorsanız, bu satırı en üste koyun

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

Düzenleyiciniz utf-8'e kaydetmiyorsa, doğru kodlamayı kullanın


2
Cevabınızı aşağılayıcı, ama orada bir sadece 24 harf Yunanca, değil ςve σaynı mektubu :-) vardır
paxdiablo

4
@paxdiablo, doh! Onları wikipedia sayfasından kopyaladım. Şanslı ki değişkeni greek_alphabeto zaman adlandırmadım :)
John La Rooy

4

Dizilerin dilimlenmesi ile yapılır [first:last+1].

Çokça kullanma eğiliminde olduğum bir numara, elipslerle fazladan bilgiyi belirtmektir. Yani, alanınız yüz karakter ise, şunu kullanırım:

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

Ve evet, ()bu durumda %biçimlendirme operatörü için gereksiz olduğunu biliyorum , bu sadece benim tarzım.


Sanırım bu düşünce için yiyecek olarak düşünülüyordu, ancak OP'nin durumunda muhtemelen bunu yapmayı önermem. Sonuç, daha fazla kırpmak için içeriği kontrol etmeniz gereken bir dize veya buna benzer bir şey olacaktır. Bu durumda birinin ya bu sayının değişken olmasını ve sonucun her zaman doğru olmasını ya da sayının sabit olmasını ve işlemin anlamlı bir şey üretmesini ya da başarısızlık durumunda hata yapmasını veya nazikçe geri dönmesini isterdim. Bir dizeye keyfi olarak metin eklemek istediğim, insan tarafından okunabilir bilgi sunmak dışında pek çok durum düşünemiyorum.

3

Önceki örneklerin çoğu, dizenizin yeterince uzun olmaması durumunda bir istisna oluşturacaktır.

Başka bir yaklaşım kullanmaktır 'yourstring'.ljust(100)[:100].strip().

Bu size ilk 100 karakteri verecektir. Son karakterlerin boşluk olması durumunda daha kısa bir dize elde edebilirsiniz.


Teşekkürler. Stackoverflow'daki en iyi yanıtların kolayca tanınmaması ve oylanmaması garip.
Fesleğen Musa

3

Dize biçimlendirme kullanmak %, bunu halletmenin harika bir yoludur. İşte bazı örnekler.

Biçimlendirme kodu bir dizeye '%s'dönüşür '12345', ancak zaten bir dizedir.

>>> '%s' % '12345'

'12345'

'%.3s' yalnızca ilk üç karakterin kullanılacağını belirtir.

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

'123'

'%.7s'ilk yedi karakteri kullanmayı söylüyor ama sadece beş tane var. Sorun değil.

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

'12345'

'%7s' en fazla yedi karakter kullanır ve eksik karakterleri sol taraftaki boşluklarla doldurur.

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

'  12345'

'%-7s' sağdaki eksik karakterlerin doldurulması dışında aynı şeydir.

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

'12345  '

'%5.3' diyor ki ilk üç karakteri kullan, ancak soldaki boşluklarla doldurarak toplam beş karakter.

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

'  123'

Sağdaki doldurma dışında aynı şey.

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

'123  '

Birden fazla argümanı da işleyebilir!

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

'do u no 123 da 67 wae'

Daha fazla esnekliğe ihtiyacınız varsa, bu str.format()da mevcuttur. İşte her ikisi için belgeler .


0
[start:stop:step]

Bu nedenle, yalnızca 100 ilk karakteri almak istiyorsanız, your_string[0:100]veya tuşunu kullanın. your_string[:100] Yalnızca karakteri çift konumda almak istiyorsanız, your_string[::2] "varsayılan değerler" başlangıç ​​için 0, dizenin durdurma süresi için ve adım - 1'i kullanın. Yani Birini sağlamaz ve ':' koymazsanız, varsayılan değerini kullanır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.