Merkkijonojen käsittely
458 528 623
Merkkijono voidaan määritellä kirjoittamalla se lainausmerkkeihin (") tai puolilainausmerkkeihin ('). Jos merkkijonoon itseensä halutaan lainausmerkkejä, merkitään lainausmerkin edelle kenoviiva (\):
>>> 'merkkijono' # puolilainausmerkit 'merkkijono' >>> 'Claude Monnet\'n maalaus' # \' sijoittaa lainausmerkin merkkijonoon "Claude Monnet'n maalaus" >>> "Claude Monnet'n maalaus" # Sama tulos lainausmerkeillä ja puolilainausmerkeillä "Claude Monnet'n maalaus" >>> '"Näin on!" hän myönsi.' '"Näin on!" hän myönsi.' >>> "\"Näin on!\" hän myönsi." '"Näin on!" hän myönsi.' >>> '"Monnet\'n maalaus" hän tiesi.' '"Monnet\'n maalaus" hän tiesi.'
print-funktiolla tulostettuna edellä olevat esimerkit tulostuvat siistimmin ilman merkkijonoa merkitseviä puolilainausmerkkejä. print-funktio tulkitsee kenoviivalla merkkijonoon ympätyt merkit:
>>> print("\"Näin on!\" hän myönsi.") "Näin on!" hän myönsi. >>> esimerkkiteksti = 'Ensimmäinen rivi.\nToinen rivi.' # \n merkitsee rivinvaihtoa >>> esimerkkiteksti # Muuttujan arvo voidaan tulostaa pelkällä muuttujan nimellä, 'Ensimmäinen rivi.\nToinen rivi.' >>> print(esimerkkiteksti) # mutta vasta print-funktio näyttää rivinvaihdon Ensimmäinen rivi. Toinen rivi.
Lisäämällä merkkijonon eteen r-kirjain (raw), saadaan merkkijono tulostumaan sellaisenaan - kenoviivoilla ei silloin voi osoittaa erikoismerkkejä:
>>> print('Siirry kansioon .\newbie') # \n tulkitaan rivinvaihdoksi Siirry kansioon . ewbie >>> print(r'Siirry kansioon .\newbie') # r-kirjain merkkijonon edessä poistaa tulkinnan Siirry kansioon .\newbie
Monirivinen merkkijono saadaan aikaiseksi \n-merkinnän lisäksi myös kolmilla lainausmerkeillä """merkkijono"""" tai '''merkkijono'''. Merkkijonon sisällä olevat rivinvaihdot tulevat automaattisesti merkkijonoon mukaan, mutta se voidaan estää lisäämällä rivin loppuun kenoviiva:
>>> print("""\ ... Usage: python pyssh.py [OPTIONS] ... -h Display this help ... -n hostname Hostname to connect to ... -a address IP address to connect to\ ... """) Usage: python pyssh.py [OPTIONS] -h Display this help -n hostname Hostname to connect to -a address IP address to connect to
Merkkijonoja voidaan yhdistää (concatenate) +-merkillä ja monistaa *-merkillä:
>>> print('Ke-ke' + 7 * '-ke-ke' + 4 * ' Rosberg') Ke-ke-ke-ke-ke-ke-ke-ke-ke-ke-ke-ke-ke-ke-ke-ke Rosberg Rosberg Rosberg Rosberg
Literaalit merkkijonot yhdistyvät automaattisesti:
>>> print('Py' 'thon') Python >>> merkkijono = ('Pitkän tekstin voi jakaa ohjelmassa usealle riville, ' ... 'ja rivit yhdistyvät automaattisesti.') >>> print(merkkijono) Pitkän tekstin voi jakaa ohjelmassa usealle riville, ja rivit yhdistyvät automaattisesti.
Merkkijonosta saa yksittäisen merkin indeksin avulla. Nolla ja positiiviset indeksin arvot osoittavat merkin sijaintia merkkijonon alusta päin, negatiiviset indeksin arvot merkkijonon lopusta päin:
>>> merkkijono = 'Python' >>> print(merkkijono[0]) # Ensimmäinen merkki P >>> print(merkkijono[5]) # Kuudes merkki n >>> print(merkkijono[-1]) # Viimeinen merkki n >>> print(merkkijono[-6]) # Kuudes merkki lopusta päin P
Merkkijonosta voidaan ottaa pätkä viipaloimalla (slicing), jolloin ilmoitetaan viipaleen ensimmäinen mukaan tuleva merkki ja ensimmäinen pois jätettävä merkki:
>>> print(merkkijono[0:2]) # Tulostaa kaksi ensimmäistä merkkiä (1. ja 2. merkki) Py >>> print(merkkijono[2:5]) # Tulostaa merkit kolmannesta viidenteen (indeksit 2-4) tho >>> print(merkkijono[:3]) # Tulostaa kolme ensimmäistä merkkiä Pyt >>> print(merkkijono[3:]) # Tulostaa loput merkit alkaen indeksistä 3 eli 4. merkistä alkaen hon >>> print(merkkijono[-4:]) # Tulostaa loput merkit alkaen neljänneksi viimeisestä thon
Merkkijonon pituus saadaan len-funktiolla:
>>> print(len('Ke-ke' + 7 * '-ke-ke' + 4 * ' Rosberg')) 79
Merkkijonoja voidaan käsitellä monipuolisesti metodeilla, joista esiteltiinkin aiemmin jo muutama esimerkki. Python 3:n merkkijono-metodien dokumentaatio kuvaa kaikki käytettävissä olevat metodit ja tarjoaa lisäksi linkkejä muihin Pythonin merkkijononkäsittelymenetelmiin.