Seuraavassa on kuvaus siitä, miten ketjutetaan ja liitetään merkkijono str Pythonissa.
- Useiden merkkijonojen ketjuttaminen ja yhdistäminen:
+
,+=
operaattori - Numeroiden ja merkkijonojen ketjuttaminen ja yhdistäminen:
+
,+=
operaattori,str()
,format()
,f-string - Yhdistää ja yhdistää merkkijonojen luetteloita (matriiseja) yhdeksi merkkijonoksi.:
join()
- Numeroluetteloiden (taulukoiden) yhdistäminen ja yhdistäminen yhdeksi merkkijonoksi.:
join()
,str()
- Useiden merkkijonojen ketjuttaminen ja yhdistäminen: +, +=operaattori
- Numeroiden ja merkkijonojen ketjuttaminen\konkatenaatio: +,+=operaattori,str(),format(),f-string
- Merkkijonojen listojen (matriisien) ketjuttaminen ja yhdistäminen: join()
- Numeroluetteloiden (matriisien) ketjuttaminen ja yhdistäminen merkkijonoina.: join(),str()
Useiden merkkijonojen ketjuttaminen ja yhdistäminen: +, +=operaattori
yhteys: +operaattori
Operaattoria ++ voidaan käyttää seuraavien merkkijonojen ja merkkijonomuuttujien ketjuuntamiseen
- '…'
- ”…”
s = 'aaa' + 'bbb' + 'ccc'
print(s)
# aaabbbccc
s1 = 'aaa'
s2 = 'bbb'
s3 = 'ccc'
s = s1 + s2 + s3
print(s)
# aaabbbccc
s = s1 + s2 + s3 + 'ddd'
print(s)
# aaabbbcccddd
yhteys: +=operaattori
Myös +=-operaattoria, kumulatiivista osoitusoperaattoria, voidaan käyttää. Vasemmanpuoleinen merkkijonomuuttuja ketjutetaan oikeanpuoleisen merkkijonon kanssa, osoitetaan ja päivitetään.
s1 += s2
print(s1)
# aaabbb
Jos haluat lisätä merkkijonon merkkijonomuuttujan loppuun, käsittele merkkijonomuuttujaa ja mitä tahansa merkkijonon literaalia (tai toista merkkijonomuuttujaa) +=-operaattorilla.
s = 'aaa'
s += 'xxx'
print(s)
# aaaxxx
Merkkijonojen literaalien peräkkäinen ketjutus
Jos kirjoitat merkkijonokirjaimet vierekkäin, merkkijonokirjaimet ketjutetaan.
s = 'aaa''bbb''ccc'
print(s)
# aaabbbccc
On hyväksyttävää, että kahden rivin välissä on välilyönti tai rivinvaihto backslash-viivalla (jota pidetään jatkona).
s = 'aaa' 'bbb' 'ccc'
print(s)
# aaabbbccc
s = 'aaa'\
'bbb'\
'ccc'
print(s)
# aaabbbccc
On olemassa tekniikka, jolla tätä voidaan käyttää pitkien merkkijonojen kirjoittamiseen usealle riville koodissa.
- Aiheeseen liittyvät artikkelit:Pitkien merkkijonojen kirjoittaminen usealle riville Pythonissa
Tämä kirjoitustapa ei ole mahdollinen merkkijonomuuttujille.
# s = s1 s2 s3
# SyntaxError: invalid syntax
Numeroiden ja merkkijonojen ketjuttaminen\konkatenaatio: +,+=operaattori,str(),format(),f-string
Eri tyyppinen +-operaatio johtaa virheeseen.
s1 = 'aaa'
s2 = 'bbb'
i = 100
f = 0.25
# s = s1 + i
# TypeError: must be str, not int
Jos haluat ketjuttaa numeerisen arvon (esim. kokonaislukutyyppi int tai liukulukutyyppi float) merkkijonon kanssa, muunna numeerinen arvo merkkijonotyypiksi komennolla str() ja ketjuta ne sitten +-operaattorilla (tai +=-operaattorilla).
s = s1 + '_' + str(i) + '_' + s2 + '_' + str(f)
print(s)
# aaa_100_bbb_0.25
Jos haluat muuntaa luvun muodon, kuten nollatäytön tai desimaalien, käytä format()-funktiota tai merkkijonomenetelmää format().
s = s1 + '_' + format(i, '05') + '_' + s2 + '_' + format(f, '.5f')
print(s)
# aaa_00100_bbb_0.25000
s = '{}_{:05}_{}_{:.5f}'.format(s1, i, s2, f)
print(s)
# aaa_00100_bbb_0.25000
Muuttujan arvo voidaan tietysti myös upottaa suoraan merkkijonoon ilman muotoilua. Tämä on yksinkertaisempaa kirjoittaa kuin +-operaattorin käyttö.
s = '{}_{}_{}_{}'.format(s1, i, s2, f)
print(s)
# aaa_100_bbb_0.25
Katso seuraavasta artikkelista lisätietoja muodon määrittämisestä.
- Aiheeseen liittyvät artikkelit:Muodon muuntaminen Pythonissa, muoto (0-täyttö, eksponentiaalinen merkintätapa, heksadesimaaliluku jne.).
Python 3.6:sta lähtien on otettu käyttöön myös mekanismi nimeltä f-string (f-string), joka on vielä yksinkertaisempi kirjoittaa kuin format().
s = f'{s1}_{i:05}_{s2}_{f:.5f}'
print(s)
# aaa_00100_bbb_0.25000
s = f'{s1}_{i}_{s2}_{f}'
print(s)
# aaa_100_bbb_0.25
Merkkijonojen listojen (matriisien) ketjuttaminen ja yhdistäminen: join()
String-metodilla join() voidaan ketjuttaa merkkijonojen luettelo yhdeksi merkkijonoksi.
Se kirjoitetaan seuraavasti.
'String to be inserted between'.join([List of strings to be concatenated])
Kutsu join()-metodia, jossa on 'merkkijono, jonka väliin lisätään', ja anna argumenttina [luettelo ketjutettavista merkkijonoista].
Jos käytetään tyhjää merkkijonoa, [luettelo yhdistettävistä merkkijonoista] yksinkertaisesti yhdistetään, jos käytetään pilkkua, merkkijonot erotetaan pilkulla, ja jos käytetään rivinvaihtomerkkiä, jokainen merkkijonoelementti rivinvaihdetaan.
l = ['aaa', 'bbb', 'ccc']
s = ''.join(l)
print(s)
# aaabbbccc
s = ','.join(l)
print(s)
# aaa,bbb,ccc
s = '-'.join(l)
print(s)
# aaa-bbb-ccc
s = '\n'.join(l)
print(s)
# aaa
# bbb
# ccc
Vaikka tässä annetaan vain esimerkki listasta, join()-oliolle voidaan antaa argumentteina myös muita iteroitavia objekteja, kuten tupleja.
Toisin kuin join()-toimintoa, split()-toimintoa käytetään jakamaan tietyllä erottimella rajattu merkkijono ja saamaan se listana.
Numeroluetteloiden (matriisien) ketjuttaminen ja yhdistäminen merkkijonoina.: join(),str()
Tapahtuu virhe, jos join():n argumentti on lista, jonka elementit eivät ole merkkijonoja.
l = [0, 1, 2]
# s = '-'.join(l)
# TypeError: sequence item 0: expected str instance, int found
Jos haluat yhdistää numeroluettelon yhdeksi merkkijonoksi, käytä str()-funktiota jokaiseen luettelon elementtiin, jotta numerot voidaan muuntaa merkkijonoksi, ja yhdistä ne sitten join()-funktiolla.
s = '-'.join([str(n) for n in l])
print(s)
# 0-1-2
Se voidaan kirjoittaa myös generaattorilausekkeena, joka on generaattoriversio listojen ymmärrettävyydestä. Generaattorilausekkeet suljetaan sulkuihin, mutta sulut voidaan jättää pois, jos generaattorilauseke on funktion tai metodin ainoa argumentti.
s = '-'.join((str(n) for n in l))
print(s)
# 0-1-2
s = '-'.join(str(n) for n in l)
print(s)
# 0-1-2
Generaattorilausekkeiden etuna on yleensä se, että ne käyttävät vähemmän muistia kuin listojen ymmärtäminen, mutta generaattorilausekkeiden käytöstä ei ole erityistä etua, koska join() muuntaa generaattorit listoiksi sisäisessä käsittelyssään. Itse asiassa on hieman nopeampaa käyttää alusta alkaen listakäsitteitä.
Lisätietoa listayhteenvedoista ja generaattorilausekkeista on seuraavassa artikkelissa.
- Aiheeseen liittyvät artikkelit:Kuinka käyttää Python-luettelon ymmärrettävyyttä