Spájanie a spájanie reťazcov v jazyku Python: Operátory +, spojovacie funkcie atď.

obchodné

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.

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.

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.

Copied title and URL