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 – a HH hexadecimális kódú karakter

  • \uHHHH – a HHHH Unicode 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.

Az "OpenMV" karakterlánc, az egyes karakterek között pozíciójelölőkkel, szemléltetve, hogyan választ ki egy szelet két pozíció közötti karaktereket.

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