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.
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.
Yanıtlar:
print my_string[0:100]
print 'foo'[:100]( len('foo')3 olduğuna dikkat edin , yani foo[100]çalışmadığında bile işe yarıyor)
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].
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
ςve σaynı mektubu :-) vardır
greek_alphabeto zaman adlandırmadım :)
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.
Ö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.
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 .
[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.