...
Merkkijonot
...
toimivat
...
tekstiä
...
säilyttävinä
...
muuttujina.
...
Joissain
...
ohjelmointi
...
kielissä
...
on
...
erikseen
...
muuttuja,
...
joka
...
kuvaa
...
yksittäistä
...
merkkiä,
...
mutta
...
Pythonissa
...
näin
...
ei
...
ole.
...
Merkkijonojen
...
toimintoja
...
voi
...
kätevästi
...
kokeilla
...
interaktiivisessa
...
ohjelmoinnissa.
...
Ensinnäkin,
...
kuten
...
aiemmin
...
puhuttiin,
...
merkkijono
...
tehdään
...
kirjoittamalla
...
teksti
...
lainausmerkkien
...
sisään,
...
mutta
...
siinä
...
on
...
muutamia
...
selvitystä
...
vaativia
...
yksityiskohtia.
...
Ensinnäkin
...
lainausmerkkiä
...
ei
...
voi
...
kirjoittaa
...
merkkijonon
...
sisään
...
sellaisenaan,
...
koska
...
se
...
käsiteltäisiin
...
merkkijonon
...
lopettavana
...
merkkinä
...
jolloin
...
aiheutuu
...
virhe.
Code Block |
---|
} >>> "merkki " aiheuttaa ongelmia" SyntaxError: invalid syntax >>> {code} |
Tätä
...
ja
...
muita
...
ertyiskohtelua
...
vaativa
...
merkkejä
...
varten
...
merkkijonoja
...
kirjoitettaessa
...
kenoviivalla,
...
jonka
...
avulla
...
kyseiset
...
merkit
...
saadaan
...
merkittyä.
...
Esimerkiksi
...
lainausmerkki
...
saadaan
...
kirjoittamalla
...
peräkkäin
...
kenoviiva
...
ja
...
lainausmerkki.
Code Block |
---|
} >>> "merkki \" ei enaan aiheuta ongelmia" 'merkki " ei enaan aiheuta ongelmia' >>> {code} |
Kenoviivan
...
avulla
...
saadaan
...
myös
...
kirjoitettua
...
ns.
...
näkymättömät
...
merkit
...
kuten
...
sarkainmerkki
...
merkkiyhdistelmällä
...
\t
...
ja
...
rivinvaihto
...
\n.
...
Välilyönti
...
myös
...
kuuluu
...
näkymättömiin
...
merkkeihin,
...
mutta
...
sitä
...
varten
...
ei
...
tarvita
...
erikoismerkintöjä.
...
Kenoviiva
...
merkitään
...
taas
...
kirjoittamalla
...
merkkijonoon
...
kaksi
...
kenoviivaa
...
peräkkäin.
...
Lainausmerkkien
...
lisäksi
...
merkkijonon
...
alussa
...
ja
...
lopussa
...
voi
...
käyttää
...
heittomerkkejä.
...
Heittomerkillä
...
tehdyissä
...
merkkijonoissa
...
täytyy
...
tosin
...
käyttää
...
kenoviivaa
...
taas
...
ennen
...
jokaista
...
heittomerkkiä.
...
Tässä
...
on
...
se
...
erikoinen
...
ominaisuus,
...
että
...
heittomerkillä
...
tehtyjen
...
merkkijonojen
...
sisään
...
voi
...
kirjoittaa
...
lainausmerkkejä
...
sellaisenaan
...
ja
...
sama
...
toimii
...
myös
...
päin
...
vastoin.
Code Block |
---|
} >>> "Lainausmerkit ja ' " "Lainausmerkit ja ' " >>> >>> 'Heittomerkit ja " ' 'Heittomerkit ja " ' >>> {code} |
On
...
vielä
...
kolmas
...
tapa
...
tehdä
...
merkkijonoja.
...
Kirjoittamalla
...
merkkijonon
...
aluksi
...
ja
...
lopuksi
...
kolme
...
lainaus-tai
...
heittomerkkiä,
...
merkkijonoa
...
voi
...
jatkaa
...
usealle
...
riville.
...
Lisäksi
...
tabulaattoria
...
ja
...
rivinvaihtoakaan
...
ei
...
tarvi
...
ilmaista
...
kenoviivan
...
avulla.
...
Merkkijonoja
...
voi
...
muokata
...
yhdistämällä,
...
samoinkuin
...
esimerkki
...
ohjelmassa
...
tehtiin.
...
Tämä
...
onnistuu
...
plus
...
merkillä.
...
Plusmerkit
...
kirjoitetaan
...
yhdistettävien
...
merkkijonojen
...
väliin
...
ja
...
yhdistettäviä
...
merkkijonoja
...
voi
...
olla
...
ueampiakin.
Code Block |
---|
} >>> "Kaksi " + "merkkijonoa." 'Kaksi merkkijonoa.' >>> >>> "Yhdistetaan " + "kolme " + "merkkijonoa." 'Yhdistetaan kolme merkkijonoa.' >>> {code} |
Merkkijonoja
...
voi
...
myös
...
monistaa
...
kertomerkillä.
...
Tällöin
...
monistettava
...
merkkijono
...
tulee
...
kertomerkin
...
vasemmalle
...
puolelle
...
ja
...
oikealle
...
puolelle
...
tulee
...
kokonaisluku,
...
joka
...
kertoo
...
kuinka
...
paljon
...
merkkijonoa
...
monistetaan.
...
Merkkijonojen
...
yhdistäminen
...
ja
...
monistaminen
...
onnistuu
...
myös
...
samalla
...
rivillä
...
-
...
plus
...
-
...
ja
...
kertomerkit
...
suoritetaan
...
samassa
...
järjestyksessä
...
kuin
...
matematiikassa.
Code Block |
---|
} >>> "mita " * 7 'mita mita mita mita mita mita mita ' >>> >>> "mita" + "?" * 10 'mita??????????' >>> {code} |
Merkkijonoon
...
voi
...
myös
...
sijoittaa
...
muiden
...
merkkijonoja
...
(ja
...
muidenkin
...
muuttujien
...
arvoja)
...
ns.
...
muotoilu
...
operaattorilla,
...
jona
...
toimii
...
prosenttimerkki.
...
Tällöin
...
merkkijonon
...
kohdassa,
...
johon
...
arvo
...
halutaan
...
sijoittaa,
...
tulee
...
lukea
...
%s.
...
Merkkijono
...
tulee
...
muotoilu
...
operaattorin
...
vasemmalle
...
puolelle
...
ja
...
sijoitettava
...
arvo
...
oikealle.
Code Block |
---|
} >>> "Sijoitus %s toiminnassa" % "merkki" 'Sijoitus merkki toiminnassa' >>> {code} |
Merkkijonosta
...
voi
...
myös
...
erotella
...
pienempiä
...
osia
...
indeksoinnin
...
ja
...
leikkauksen
...
avulla
...
-
...
molempien
...
merkitsemisessä
...
käytetään
...
hakasulkuja.
...
Indeksoinnissa
...
hakasulut
...
kirjoitetaan
...
merkkijonon
...
jälkeen
...
ja
...
hakasulkujen
...
sisään
...
kirjoitetaan
...
sen
...
merkin
...
indeksi,
...
joka
...
merkkijonosta
...
halutaan
...
(indeksi
...
nolla
...
on
...
merkkijonon
...
ensimmäinen
...
merkki).
...
Negatiivinen
...
luku
...
taas
...
kertoo
...
monesko
...
merkki
...
merkkijonon
...
lopusta
...
laskettuna
...
valitaan
...
(-1
...
on
...
viimeinen
...
merkki).
Code Block |
---|
} >>> "abcdefg"[3] 'd' >>> >>> "abcdefg"[-3] 'e' >>> {code} |
Leikkauksella
...
merkkijonosta
...
otetaan
...
useampi
...
merkki
...
kirjoittamalla
...
hakasulkeisiin
...
kaksoispiste
...
ja
...
sen
...
molemmin
...
puolin
...
rajat
...
kokonaisluvuin
...
(positiivisin
...
tai
...
negatiivisin),
...
joiden
...
välistä
...
merkit
...
valitaan.
...
Viimeisen
...
indeksin
...
osoittama
...
merkkä
...
ei
...
lukeudu
...
leikattavaan
...
pätkään.
...
Lisäksi
...
jättämällä
...
leikkauksen
...
alkupään
...
määrittämättä
...
leikkaus
...
kohdistuu
...
automaattisesti
...
merkkijonon
...
alkuun
...
ja
...
jättämällä
...
loppupään
...
määrittämättä
...
leikkaus
...
kohdistuu
...
automaattisesti
...
merkkijonon
...
loppuun
...
-
...
näin
...
pelkkä
...
kaksoispiste
...
palauttaa
...
koko
...
alkuperäisen
...
merkkijonon.
Code Block |
---|
} >>> "abcdefg"[0:3] 'abc' >>> "abcdefg"[3:-3] 'd' >>> "abcdefg"[2:-2] 'cde' >>> "abcdefg"[:-2] 'abcde' >>> "abcdefg"[2:] 'cdefg' >>> "abcdefg"[:] 'abcdefg' >>> {code} |
Jos
...
tarvitaan
...
vielä
...
tarkempaa
...
merkkijonojen
...
käsittelyä,
...
niin
...
voi
...
käyttää
...
kahta
...
kaksoispistettä,
...
jolloin
...
voi
...
määrittää
...
välin,
...
joka
...
jää
...
valittavien
...
merkkien
...
väliin.
...
Tässä
...
leikkauksen
...
alku
...
kirjoitetaan
...
ennen
...
ensimmäistä
...
kaksoispistettä,
...
loppu
...
kirjoitetaan
...
kaksoispisteiden
...
väliin
...
ja
...
leikkausväli
...
toisen
...
kaksoispisteen
...
jälkeen.
Code Block |
---|
} >>> "abcdefg"[1:-1:2] 'bdf' >>> {code} |
Lisäksi
...
merkkijonon
...
(ja
...
muidenkin
...
arvojen)
...
tallentaminen
...
muuttujaan
...
onnistuu
...
yhtäsuuruusmerkillä
...
=.
...
Vasemmalle
...
tulee
...
muuttujaa
...
merkitsevä
...
tunnistin
...
ja
...
oikealle
...
arvo,
...
joka
...
siihen
...
halutaan
...
sijoittaa.
...
Operaatiot
...
toimivat
...
samalla
...
lailla
...
tehtiin
...
ne
...
sitten
...
suoraan
...
merkkijono
...
ilmaisulle
...
tai
...
muuttujaan
...
talennetulle
...
merkkijonolle.
Code Block |
---|
} >>> "abcdefg"[2] 'c' >>> s = "abcdefg" >>> s[2] 'c' >>> {code} |