V nadaljevanju je opisano, kako v Pythonu združiti in spojiti niz nizov str.
- Povezovanje in združevanje več nizov:
+
,+=
operater - Povezovanje in združevanje števil in nizov:
+
,+=
operater,str()
,format()
,f-string - Konkateniranje in združevanje seznamov (nizov) nizov v en sam niz:
join()
- Konkateniranje in združevanje seznamov (nizov) števil v en sam niz:
join()
,str()
Povezovanje in združevanje več nizov: +, +=operater
povezava: +operater
Operator ++ lahko uporabite za združevanje naslednjih nizovskih literalov in nizovskih spremenljivk
- '…'
- “…”
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
povezava: +=operater
Uporabite lahko tudi operator +=, kumulativni operator za pripisovanje. Spremenljivka z nizom na levi strani se združi z nizom na desni strani ter se pripiše in posodobi.
s1 += s2
print(s1)
# aaabbb
Če želite na konec spremenljivke z nizom dodati niz, preprosto obdelajte spremenljivko z nizom in kateri koli literal z nizom (ali drugo spremenljivko z nizom) z operatorjem +=.
s = 'aaa'
s += 'xxx'
print(s)
# aaaxxx
Zaporedno povezovanje literalov nizov
Če literale nizov zapišete drug ob drugem, bodo literali nizov združeni.
s = 'aaa''bbb''ccc'
print(s)
# aaabbbccc
Sprejemljiv je presledek med dvema vrsticama ali prekinitev vrstice s povratno poševnico (velja za nadaljevanje).
s = 'aaa' 'bbb' 'ccc'
print(s)
# aaabbbccc
s = 'aaa'\
'bbb'\
'ccc'
print(s)
# aaabbbccc
Obstaja tehnika, ki omogoča zapisovanje dolgih nizov v več vrsticah v kodi.
- Sorodni članki:Pisanje dolgih nizov v več vrsticah v programu Python
Ta način zapisovanja ni mogoč za nizovne spremenljivke.
# s = s1 s2 s3
# SyntaxError: invalid syntax
Povezovanje številk in nizov\konkatenacija: +,+=operater,str(),format(),f-string
Operacija + druge vrste povzroči napako.
s1 = 'aaa'
s2 = 'bbb'
i = 100
f = 0.25
# s = s1 + i
# TypeError: must be str, not int
Če želite združiti številsko vrednost (npr. celoštevilski tip int ali tip s plavajočo vejico float) z nizom, pretvorite številsko vrednost v niz s funkcijo str() in ju nato združite z operatorjem + (ali +=).
s = s1 + '_' + str(i) + '_' + s2 + '_' + str(f)
print(s)
# aaa_100_bbb_0.25
Če želite pretvoriti obliko števila, na primer izpolnjevanje ničle ali decimalnih mest, uporabite funkcijo format() ali metodo string 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
Seveda je mogoče vrednost spremenljivke vgraditi tudi neposredno v niz brez oblikovanja. To je preprostejše za zapisovanje kot uporaba operatorja +.
s = '{}_{}_{}_{}'.format(s1, i, s2, f)
print(s)
# aaa_100_bbb_0.25
Podrobnosti o tem, kako določiti obliko, najdete v naslednjem članku.
- Sorodni članki:Pretvorba formata v Pythonu, format (polnjenje 0, eksponentni zapis, šestnajstiški zapis itd.)
Od različice Python 3.6 je uveden tudi mehanizem, imenovan f-strings (f-string), ki je še enostavnejši za pisanje kot 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
Povezovanje in združevanje seznamov (nizov) nizov: join()
Z metodo join() lahko združite seznam nizov v en sam niz.
V nadaljevanju je opisano, kako ga napisati.
'String to be inserted between'.join([List of strings to be concatenated])
Pokličite metodo join() z ukazom 'niz za vstavitev med' in kot argument podajte [seznam nizov za združitev].
Če je uporabljen prazen niz, bo [seznam nizov za združitev] preprosto združen, če je uporabljena vejica, bodo nizi ločeni z vejico, če pa je uporabljen znak nove vrstice, bo vsak element niza podčrtan.
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
Čeprav je tukaj podan le primer seznama, lahko kot argumente funkcije join() navedete tudi druge iterabilne predmete, kot so tuple.
V nasprotju s funkcijo join() se funkcija split() uporablja za razdelitev niza, omejenega z določenim ločilom, in ga dobi kot seznam.
Povezovanje in združevanje seznamov (nizov) števil kot nizov: join(),str()
Če je argument funkcije join() seznam, katerega elementi niso nizi, pride do napake.
l = [0, 1, 2]
# s = '-'.join(l)
# TypeError: sequence item 0: expected str instance, int found
Če želite združiti seznam številk v en sam niz, uporabite funkcijo str() za vsak element v zapisu razumevanja seznama, da številke pretvorite v niz, in jih nato združite s funkcijo join().
s = '-'.join([str(n) for n in l])
print(s)
# 0-1-2
Lahko ga zapišemo tudi kot generatorski izraz, ki je generatorska različica razumevanja seznamov. Generatorski izrazi so zaprti v oklepajih, vendar jih lahko izpustimo, če je generatorski izraz edini argument funkcije ali metode.
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
Generatorski izrazi imajo na splošno to prednost, da porabijo manj pomnilnika kot razumevanje seznamov, vendar uporaba generatorskih izrazov nima posebne prednosti, saj funkcija join() pri notranji obdelavi pretvori generatorje v sezname. Dejansko je nekoliko hitrejše, če že od začetka uporabljamo razumevanje seznamov.
Za več informacij o razumevanju seznamov in generatorskih izrazih glejte naslednji članek.
- Sorodni članki:Kako uporabljati razumevanje seznamov v Pythonu