Spojování a spojování řetězců v jazyce Python: Operátory +, spojovací funkce atd.

Podnikání

Následuje popis spojování a spojování řetězců string v jazyce Python.

  • Spojování a slučování více řetězců: +,+=operátor
  • Spojování a kombinování čísel a řetězců: +,+=operátor,str(),format(),f-řetězec
  • Spojování a kombinování seznamů (polí) řetězců do jednoho řetězce:join()
  • Spojování a kombinování seznamů (polí) čísel do jednoho řetězce:join(),str()

Spojování a slučování více řetězců: +, +=operátor

připojení: +operátor

Operátor ++ lze použít ke spojení následujících řetězcových literálů a řetězcových proměnný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

připojení: +=operátor

Lze také použít operátor +=, kumulativní operátor přiřazení. Řetězcová proměnná na levé straně se spojí s řetězcem na pravé straně, přiřadí se a aktualizuje.

s1 += s2
print(s1)
# aaabbb

Pokud chcete přidat řetězec na konec řetězcové proměnné, jednoduše zpracujte řetězcovou proměnnou a libovolný řetězcový literál (nebo jinou řetězcovou proměnnou) pomocí operátoru +=.

s = 'aaa'

s += 'xxx'
print(s)
# aaaxxx

Postupné spojování řetězcových literálů

Pokud jednoduše zapíšete řetězcové literály vedle sebe, budou řetězcové literály spojeny.

s = 'aaa''bbb''ccc'
print(s)
# aaabbbccc

Mezi dvěma řádky je přípustná mezera nebo zpětné lomítko (považované za pokračování).

s = 'aaa'  'bbb'    'ccc'
print(s)
# aaabbbccc

s = 'aaa'\
    'bbb'\
    'ccc'
print(s)
# aaabbbccc

Existuje technika, která umožňuje zapsat dlouhé řetězce na více řádků v kódu.

Tento způsob zápisu není možný pro řetězcové proměnné.

# s = s1 s2 s3
# SyntaxError: invalid syntax

Konkatenace čísel a řetězců\konkatenace: +,+=operátor,str(),format(),f-řetězec

Operace + jiného typu vede k chybě.

s1 = 'aaa'
s2 = 'bbb'

i = 100
f = 0.25

# s = s1 + i
# TypeError: must be str, not int

Pokud chcete spojit číselnou hodnotu (např. celé číslo typu int nebo číslo s pohyblivou řádovou čárkou typu float) s řetězcem, převeďte číselnou hodnotu na řetězcový typ pomocí funkce str() a poté je spojte pomocí operátoru + (nebo +=).

s = s1 + '_' + str(i) + '_' + s2 + '_' + str(f)
print(s)
# aaa_100_bbb_0.25

Pokud chcete převést formát čísla, například vyplnění nulou nebo desetinná místa, použijte funkci format() nebo řetězcovou metodu 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

Hodnotu proměnné je samozřejmě možné vložit přímo do řetězce bez formátování. To je jednodušší než zápis pomocí operátoru +.

s = '{}_{}_{}_{}'.format(s1, i, s2, f)
print(s)
# aaa_100_bbb_0.25

Podrobnosti o zadávání formátu naleznete v následujícím článku.

Od verze Python 3.6 byl také zaveden mechanismus zvaný f-řetězce (f-string), jehož zápis je ještě jednodušší než formátování().

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

Slučování a spojování seznamů (polí) řetězců: join()

Metodu join() lze použít ke spojení seznamu řetězců do jednoho řetězce.

Následující postup je následující.

'String to be inserted between'.join([List of strings to be concatenated])

Volání metody join() s 'string to insert between' a předání [seznam řetězců ke spojení] jako argumentu.

Pokud je použit prázdný řetězec, bude [seznam řetězců, které mají být spojeny] jednoduše spojen, pokud je použita čárka, budou řetězce odděleny čárkou, a pokud je použit znak nového řádku, bude každý prvek řetězce oddělen novým řádkem.

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

Ačkoli je zde uveden pouze příklad seznamu, jako argumenty funkce join() lze zadat i jiné iterovatelné objekty, například tuply.

Na rozdíl od funkce join() se funkce split() používá k rozdělení řetězce ohraničeného určitým oddělovačem a jeho získání jako seznamu.

Spojování a kombinování seznamů (polí) čísel jako řetězců: join(),str()

K chybě dojde, pokud je argumentem funkce join() seznam, jehož prvky nejsou řetězce.

l = [0, 1, 2]

# s = '-'.join(l)
# TypeError: sequence item 0: expected str instance, int found

Chcete-li spojit seznam čísel do jednoho řetězce, použijte funkci str() na každý prvek v zápisu srozumitelnosti seznamu, abyste čísla převedli na řetězec, a poté je spojte pomocí funkce join().

s = '-'.join([str(n) for n in l])
print(s)
# 0-1-2

Lze jej také zapsat jako generátorový výraz, který je generátorovou verzí seznamových porozumění. Generátorové výrazy se uzavírají do závorek, ale závorky lze vynechat, pokud je generátorový výraz jediným argumentem funkce nebo metody.

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í obecně tu výhodu, že spotřebovávají méně paměti než výrazy srozumitelné pro seznamy, ale použití generátorových výrazů nemá žádnou zvláštní výhodu, protože funkce join() při svém vnitřním zpracování převádí generátory na seznamy. Ve skutečnosti je o něco rychlejší používat od začátku seznamové comprehensions.

Další informace o seznamových výrazech a generátorových výrazech naleznete v následujícím článku.

Copied title and URL