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().