Sayılara ek olarak, Python dizgeler üzerinde de işlemler yapabilir.
Dizgeler farklı şekillerde ifade edilebilir. Tek veya çift tırnak
işareti içine alınabilirler:
>>> 'dizge'
'dizge'
>>> "Python\'un gücü"
"Python'un gücü"
>>> "doesn't"
"doesn't"
>>> '"Yes," he said.'
'"Yes," he said.'
>>> "\"Yes,\" he said."
'"Yes," he said.'
>>> '"Isn\'t," she said.'
'"Isn\'t," she said.'
Dizgeler birkaç şekilde birden fazla satıra yayılabilirler. Yeni
satırlar ters eğik çizgi ile şöyle gösterilebilirler:
>>> merhaba = "Bu C de de kullandığınıza benzer\n\
... birkaç satır kaplayan bir dizge.\n\
... Bu satırın başındaki \
... girintinin belirgin olduğuna \
... dikkat edin\n"
>>> print merhaba
ve bu şu çıktıyı verir:
Bu C de de kullandığınıza benzer
birkaç satır kaplayan bir dizge.
Bu satırın başındaki girintinin belirgin olduğuna dikkat edin
>>>
Karakter dizisini r ile imleyerek ham
dizge yapacak olursak, \n\ karakterleri
yorumlanmaz, dizgenin bir parçası haline gelirler. Örneğin:
merhaba = r"Bu C de de kullandığınıza benzer\n\
birkaç satır kaplayan bir karakter dizisi."
print merhaba
şu çıktıyı verir:
Bu C de de kullandığınıza benzer\n\
birkaç satır kaplayan bir karakter dizisi.
Karakter dizileri bir çift üçlü tırnak içinde de gösterilebilirler:
Dizgeler bir çift üçlü tırnak içinde de gösterilebilirler:
""" veya '''. Bu
gösterim şeklinde satır sonlarının \n
ile gösterilmesine gerek yoktur ve onlar olmadan da yeni
satırlar doğru şekilde görünürler. Örnek:
print """
Kullanım şekli : seninprog [SEÇENEKLER]
-y Bu yardım mesajını görüntüler
-S bağlanılacak sunucu adı
"""
ifadesi şu çıktıyı verir :
Kullanım şekli : seninprog [SEÇENEKLER]
-y Bu yardım mesajını görüntüler
-S bağlanılacak sunucu adı
Yorumlayıcı dizge işlemlerinin sonucunu girişine yazıldığı şekli
ile çıkışa yazar. Dizgeler + işleçi
ile birleştirilip, * ile tekrarlanabilirler:
kelime = 'Alo' + 'ooo'
>>> kelime
'Aloooo'
>>> '<' + kelime*5 + '>'
'<AlooooAlooooAlooooAlooooAloooo>'
Yan yana iki dizge değişkeni otomatik olarak birleştirilir yani
yukarıdaki örnekteki ilk satır kelime = 'Alo' 'ooo'
şeklinde de yazılabilirdi. Bu sadece iki dizge değişkeni ile olur.
Keyfî dizgeler arasında olamaz:
import string
>>> 'str' 'ing' # <- Bu doğru
'string'
>>> string.strip('str') + 'ing' # <- Bu da doğru
'string'
>>> string.strip('str') 'ing' # <- Bu geçersız !!!
File "<stdin>", line 1, in ?
string.strip('str') 'ing'
^
SyntaxError: invalid syntax
C'de olduğu gibi, Python'da da dizgeler indislenebilirler.
Dizgenin ilk karakterinin indisi sıfırdır. Python'da ayrı bir karakter
veri türü yoktur. Bir karakter tek karakterli bir dizgedir. Icon
dilinde (70'li yıllarda Ralph ve Marge Griswold'ün geliştirdiği Pascal
benzeri bir SNOBOL4 türevi) olduğu gibi dizgelerin bölümleri
dilim gösterimi [ : ] ile ifade edilebilirler.
>>> kelime[4]
'o'
>>> kelime[0:2]
'Al'
>>> kelime[2:4]
'oo'
C dilinden farklı olarak, Python'da dizgeler değiştirilemezler.
Bir dizgenin indislenen bir konumuna değer atamaya çalışmak hatadır:
>>> kelime[0] = 'x'
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: object doesn't support item assignment
>>> kelime[:1] = 'Splat'
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: object doesn't support slice assignment
Yukarıdaki soruna elde edilmek istenen dizge için yeni bir karakter
dizisi oluşturularak çözüm bulunabilir. Bu kolay ve etkilidir:
'x' + kelime[1:]
'xloooo'
>>> 'Splat' + kelime[4]
'Splato'
Dilimlerin varsayılan başlangıç ve bitiş değerleri oldukça kullanışlıdır.
Başlangıç değeri yoksa sıfır kabul edilir ve eğer bitiş değeri yoksa
dilimlenen dizgenin boyu kadar olduğu kabul edilir. Örnekler :
>>> kelime[:2] # İlk iki karakter
'Al'
>>> kelime[2:] # İlk iki karakter dışındaki karakterler
'oooo'
s[:i] + s[i:] = s olup dilimleme işlemlerinin
kullanışlı bir şeklidir. Örnek:
>>> kelime[:2] + kelime[2:]
'Aloooo'
>>> kelime[:3] + kelime[3:]
'Aloooo'
Çok büyük veya küçük dilim aralıkları akıllıca ele alınır. Bitiş değeri
büyük ise bunun boyu dizgenin boyuna eşit olur. Başlangıç
değeri bitişten büyük ise boş bir dizge elde edilir.
>>> kelime[1:100]
'loooo'
>>> kelime[10:]
''
>>> kelime[2:1]
''
İndisler negatif sayılar da olabilirler. Bu durumda saymaya sağ
taraftan başlanır.
>>> kelime[-1] # Son karakter
'o'
>>> kelime[-2] # Sondan ikinci
'o'
>>> kelime[-2:] # Son iki karakter
'oo'
>>> kelime[:-2] # Son iki karakter dışındaki karakterler
'Aloo'
-0 ın 0 ile aynı olduğuna dikkat edin; yani yine soldan sayar!
>>> kelime[-0] # (-0 = 0 olduğundan)
'A'
Sınır dışındaki negatif dilim indisleri küçültülürler; fakat bunu
dilim olmayan tek bir indis ile denemeyin:
>>> kelime[-100:]
'Aloooo'
>>> kelime[-10] # hata !
Traceback (most recent call last):
File "<stdin>", line 1
IndexError: string index out of range
Dilimlerin nasıl çalıştığını hatırlamanın en iyi yolu indislerin
karakterler arasını işaret ettiğini düşünmektir; şu şekilde bu daha
iyi görülebilir:
+---+---+---+---+---+
| H | e | l | p | A |
+---+---+---+---+---+
0 1 2 3 4 5
-5 -4 -3 -2 -1
Negatif olmayan indisler için dilim boyu indisler arası fark kadardır.
Örneğin kelime[1:3] diliminin boyu 2 dir.
Yerleşik işlev len() bir dizgenin boyunu verir.
>>> s = 'ArrestedDevelopmentZingalamaduni'
>>> len(s)
32