2.4. Dizeler (Strings)¶
Bir dize (string), tırnak işaretleri arasına yazılan bir Unicode karakter dizisidir. Tek tırnaklar ve çift tırnaklar eşdeğerdir – metin içinde geçen tırnakları kaçış (escape) yapmaktan kurtaran stili seçin:
name = "OpenMV Cam"
company = 'OpenMV, LLC'
message = "She said \"hi\"" # both styles can be used
same = 'She said "hi"'
Üç tırnaklı dizeler ("""...""" veya '''...''') birden çok satıra yayılır ve satır sonlarını olduğu gibi korur:
banner = """boot ok
firmware v1.28
"""
print(banner)
Çıktı:
boot ok
firmware v1.28
2.4.1. Kaçış dizileri¶
Normal bir dizenin içinde \ özel bir karakter başlatır:
\n– satır sonu\t– sekme\\– düz bir ters eğik çizgi\'/\"– düz bir tırnak (aksi takdirde dizeyi sonlandıracağı durumlarda)\xHH–HHonaltılık koduna sahip karakter\uHHHH–HHHHUnicode kod noktası
Bir dize çok sayıda ters eğik çizgi içerdiğinde, onu ham (raw) bir dizeye dönüştürmek için literalin önüne r ekleyin. Ters eğik çizgiler o zaman düz biçimde alınır – \n bir satır sonuyla değiştirilmek yerine iki karakter uzunluğunda kalır:
win_path = r"C:\Users\OpenMV\camera.py"
literal = r"\n is two characters, not a newline"
2.4.2. Birleştirme ve tekrarlama¶
İki dize + ile birleştirilir; bir dize * ile tekrarlanır:
greeting = "Hello, " + name + "!"
line = "-" * 40 # 40-character separator
Bir döngüde tekrarlanan + her yinelemede yeni bir dize ayırır. Birçok parçadan daha büyük dizeler oluşturmak için str.join() kullanın.
2.4.3. Uzunluk, indeksleme ve dilimleme¶
len() bir dizedeki karakter sayısını döndürür. [] ile indeksleme, verilen konumdaki tek karakterlik bir dize döndürür; negatif indeksler sondan saymaya başlar:
>>> s = "OpenMV"
>>> len(s)
6
>>> s[0]
'O'
>>> s[-1]
'V'
Bir dilim (slice) s[start:stop], start konumundan stop konumuna kadar (ona dahil olmadan) alt dizeyi döndürür. İki uçtan biri “baş” veya “son” anlamına gelmek üzere atlanabilir ve isteğe bağlı bir üçüncü değer s[start:stop:step] karakter atlamanıza olanak tanır.
Dilim konumları karakterlerin arasında yer alır. s[2:5] 2, 3 ve 4. konumlardaki karakterleri seçer.¶
>>> s = "OpenMV"
>>> s[2:5]
'enM'
>>> s[:3]
'Ope'
>>> s[3:]
'nMV'
>>> s[::-1]
'VMnepO' # whole string, reversed
Aralık dışı bir dilim, sessizce mevcut olan kısmı döndürür – s[100:200] bir hata değil, boş dize "" olur. Buna karşılık, aralık dışında indeksleme IndexError yükseltir.
2.4.4. Değişmezlik¶
Dizeler yerinde değiştirilemez. Bir dizeyi değiştiriyormuş gibi görünen işlemler aslında yeni bir dize döndürür ve orijinalini olduğu gibi bırakır:
>>> name = "OpenMV"
>>> name.upper()
'OPENMV'
>>> name
'OpenMV' # unchanged
Bir dizeyi “değiştirmek” için, adı yeni değere yeniden bağlayın: name = name.upper().