Nasleduje opis spôsobu spájania a spájania reťazcov string v jazyku Python.
- Spájanie a zlučovanie viacerých reťazcov:
+
,+=
operátor - Spájanie a kombinovanie čísel a reťazcov:
+
,+=
operátor,str()
,format()
,f-string - Spájanie a kombinovanie zoznamov (polí) reťazcov do jedného reťazca:
join()
- Spájanie a kombinovanie zoznamov (polí) čísel do jedného reťazca:
join()
,str()
Spájanie a zlučovanie viacerých reťazcov: +, +=operátor
pripojenie: +operátor
Operátor ++ možno použiť na spojenie nasledujúcich reťazcových literálov a reťazcových premenných
- '…'
- „…“
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
pripojenie: +=operátor
Možno použiť aj operátor +=, kumulatívny operátor priradenia. Reťazcová premenná na ľavej strane sa spojí s reťazcom na pravej strane, priradí sa a aktualizuje.
s1 += s2
print(s1)
# aaabbb
Ak chcete pridať reťazec na koniec reťazcovej premennej, jednoducho spracujte reťazcovú premennú a akýkoľvek reťazcový literál (alebo inú reťazcovú premennú) pomocou operátora +=.
s = 'aaa'
s += 'xxx'
print(s)
# aaaxxx
Postupné spájanie reťazcových literálov
Ak jednoducho zapíšete reťazcové literály vedľa seba, reťazcové literály sa spoja.
s = 'aaa''bbb''ccc'
print(s)
# aaabbbccc
Medzi dvoma riadkami je prípustná medzera alebo spätné lomítko (považuje sa za pokračovanie).
s = 'aaa' 'bbb' 'ccc'
print(s)
# aaabbbccc
s = 'aaa'\
'bbb'\
'ccc'
print(s)
# aaabbbccc
Existuje technika, ktorá sa používa na zápis dlhých reťazcov na viacerých riadkoch v kóde.
- Súvisiace články:Zápis dlhých reťazcov na viacerých riadkoch v jazyku Python
Tento spôsob zápisu nie je možný pre reťazcové premenné.
# s = s1 s2 s3
# SyntaxError: invalid syntax
Konkatenácia čísel a reťazcov\konkatenácia: +,+=operátor,str(),format(),f-string
Operácia + iného typu vedie k chybe.
s1 = 'aaa'
s2 = 'bbb'
i = 100
f = 0.25
# s = s1 + i
# TypeError: must be str, not int
Ak chcete spojiť číselnú hodnotu (napr. celočíselnú typu int alebo s pohyblivou rádovou čiarkou typu float) s reťazcom, preveďte číselnú hodnotu na reťazcový typ pomocou funkcie str() a potom ich spojte pomocou operátora + (alebo operátora +=).
s = s1 + '_' + str(i) + '_' + s2 + '_' + str(f)
print(s)
# aaa_100_bbb_0.25
Ak chcete previesť formát čísla, napríklad vyplnenie nulou alebo desatinnými miestami, použite funkciu format() alebo reťazcovú metódu 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
Samozrejme, hodnotu premennej je možné vložiť aj priamo do reťazca bez formátovania. Je to jednoduchšie zapísať ako pomocou operátora +.
s = '{}_{}_{}_{}'.format(s1, i, s2, f)
print(s)
# aaa_100_bbb_0.25
Podrobnosti o zadávaní formátu nájdete v nasledujúcom článku.
- Súvisiace články:Konverzia formátu v jazyku Python, formát (vyplnenie 0, exponenciálny zápis, hexadecimálny zápis atď.)
Od verzie 3.6 jazyka Python sa zaviedol aj mechanizmus nazývaný f-strings (f-string), ktorý je ešte jednoduchší na zápis ako 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
Zlučovanie a spájanie zoznamov (polí) reťazcov: join()
Metódu join() možno použiť na spojenie zoznamu reťazcov do jedného reťazca.
Nasledujúci postup je nasledovný.
'String to be inserted between'.join([List of strings to be concatenated])
Volajte metódu join() s 'string to insert between' a ako argument odovzdajte [zoznam reťazcov na spojenie].
Ak sa použije prázdny reťazec, [zoznam reťazcov, ktoré sa majú spojiť] sa jednoducho spojí, ak sa použije čiarka, reťazce sa oddelia čiarkou, a ak sa použije znak nového riadku, každý prvok reťazca sa zalomí.
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
Hoci je tu uvedený len príklad zoznamu, ako argumenty funkcie join() možno uviesť aj iné iterovateľné objekty, napríklad tuply.
Na rozdiel od funkcie join() sa funkcia split() používa na rozdelenie reťazca ohraničeného určitým oddeľovačom a jeho získanie ako zoznamu.
Spájanie a kombinovanie zoznamov (polí) čísel ako reťazcov: join(),str()
K chybe dôjde, ak je argumentom funkcie join() zoznam, ktorého prvky nie sú reťazce.
l = [0, 1, 2]
# s = '-'.join(l)
# TypeError: sequence item 0: expected str instance, int found
Ak chcete spojiť zoznam čísel do jedného reťazca, použite funkciu str() na každý prvok v zápise porozumenia zoznamu, aby ste čísla previedli na reťazec, a potom ich spojte pomocou funkcie join().
s = '-'.join([str(n) for n in l])
print(s)
# 0-1-2
Možno ho zapísať aj ako generátorový výraz, ktorý je generátorovou verziou zoznamových comprehensions. Generátorové výrazy sú uzavreté v zátvorkách, ale zátvorky možno vynechať, ak je generátorový výraz jediným argumentom funkcie alebo metódy.
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
Generátorové výrazy majú vo všeobecnosti tú výhodu, že využívajú menej pamäte ako zoznamy, ale použitie generátorových výrazov nemá žiadnu zvláštnu výhodu, pretože funkcia join() pri svojom vnútornom spracovaní konvertuje generátory na zoznamy. V skutočnosti je od začiatku o niečo rýchlejšie používať zoznamové porozumenia.
Ďalšie informácie o zoznamoch a generátorových výrazoch nájdete v nasledujúcom článku.
- Súvisiace články:Ako používať zoznamy jazyka Python