2.4. Karakterláncok¶
A karakterlánc idézőjelek közé írt Unicode karakterek sorozata. Az egyszeres és a kettős idézőjel egyenértékű – válaszd azt a stílust, amely lehetővé teszi, hogy elkerüld a szövegen belül megjelenő idézőjelek escape-elését:
name = "OpenMV Cam"
company = 'OpenMV, LLC'
message = "She said \"hi\"" # both styles can be used
same = 'She said "hi"'
A háromszoros idézőjelű karakterláncok ("""...""" vagy '''...''') több sorra terjednek ki, és az újsor karaktereket szó szerint megőrzik:
banner = """boot ok
firmware v1.28
"""
print(banner)
Kimenet:
boot ok
firmware v1.28
2.4.1. Escape-szekvenciák¶
Egy normál karakterláncon belül a \ egy speciális karaktert vezet be:
\n– újsor\t– tabulátor\\– egy szó szerinti fordított perjel\'/\"– egy szó szerinti idézőjel (amikor egyébként lezárná a karakterláncot)\xHH– aHHhexadecimális kódú karakter\uHHHH– aHHHHUnicode kódpont
Amikor egy karakterlánc sok fordított perjelet tartalmaz, lásd el a literált r előtaggal, hogy nyers karakterlánccá tedd. Ekkor a fordított perjeleket a rendszer szó szerint veszi – a \n két karakter hosszú marad ahelyett, hogy újsorra cserélődne:
win_path = r"C:\Users\OpenMV\camera.py"
literal = r"\n is two characters, not a newline"
2.4.2. Összefűzés és ismétlés¶
Két karakterláncot a + jellel kapcsolunk össze; egy karakterláncot a * jellel ismétlünk:
greeting = "Hello, " + name + "!"
line = "-" * 40 # 40-character separator
A + ciklusban való ismételt használata minden iterációban egy új karakterláncot foglal le. Ahhoz, hogy sok darabból nagyobb karakterláncokat építs fel, használd a str.join() metódust.
2.4.3. Hossz, indexelés és szeletelés¶
A len() egy karakterlánc karaktereinek számát adja vissza. A [] jelekkel való indexelés egy egykarakteres karakterláncot ad vissza az adott pozícióban; a negatív indexek a végétől számolnak:
>>> s = "OpenMV"
>>> len(s)
6
>>> s[0]
'O'
>>> s[-1]
'V'
Egy szelet s[start:stop] a start pozíciótól a stop pozícióig (azt nem beleértve) terjedő részkarakterláncot adja vissza. Bármelyik végpont elhagyható, ami a „kezdetet” vagy a „véget” jelenti, és egy opcionális harmadik érték s[start:stop:step] lehetővé teszi karakterek átugrását.
A szeletpozíciók a karakterek között helyezkednek el. Az s[2:5] a 2., 3. és 4. pozícióban lévő karaktereket választja ki.¶
>>> s = "OpenMV"
>>> s[2:5]
'enM'
>>> s[:3]
'Ope'
>>> s[3:]
'nMV'
>>> s[::-1]
'VMnepO' # whole string, reversed
Egy tartományon kívüli szelet csendben azt a részt adja vissza, ami létezik – az s[100:200] az üres "" karakterlánc, nem pedig hiba. Ezzel szemben a tartományon kívüli indexelés IndexError kivételt vált ki.
2.4.4. Megváltoztathatatlanság¶
A karakterláncok helyben nem módosíthatók. Azok a műveletek, amelyek úgy tűnik, mintha módosítanák a karakterláncot, valójában egy új karakterláncot adnak vissza, és az eredetit érintetlenül hagyják:
>>> name = "OpenMV"
>>> name.upper()
'OPENMV'
>>> name
'OpenMV' # unchanged
Egy karakterlánc „megváltoztatásához” kösd hozzá újra a nevet az új értékhez: name = name.upper().