Sztringek összekapcsolása és összekapcsolása Pythonban: + operátorok, egyesítő függvények stb.

Üzleti

Az alábbiakban bemutatjuk, hogyan lehet a str karakterláncokat összekapcsolni és összekötni Pythonban.

  • Több karakterlánc összekapcsolása és összevonása: +,+=üzemeltető
  • Számok és karakterláncok összekapcsolása és kombinálása: +,+=üzemeltető,str(),format(),f-string
  • Sztringek listáinak (tömbök) összekapcsolása és egyesítése egyetlen sztringgé:join()
  • Számok listáinak (tömbök) összekapcsolása és kombinálása egyetlen karakterlánccá:join(),str()

Több karakterlánc összekapcsolása és összevonása: +, +=üzemeltető

kapcsolat: +üzemeltető

A ++ operátor a következő karakterláncok és karakterláncváltozók összekapcsolására használható

  • '…'
  • “…”
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

kapcsolat: +=üzemeltető

A += operátor, egy kumulatív hozzárendelési operátor is használható. A bal oldali stringváltozót a jobb oldali stringgel konkatenálja, hozzárendeli és frissíti.

s1 += s2
print(s1)
# aaabbb

Ha egy string változó végéhez egy stringet akar hozzáadni, egyszerűen dolgozza fel a string változót és bármely string literált (vagy egy másik string változót) a += operátorral.

s = 'aaa'

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

Sztring literálok egymás utáni összekapcsolása

Ha egyszerűen string literálokat ír egymás mellé, akkor a string literálok össze lesznek fűzve.

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

Elfogadható, ha két sor között szóköz vagy backslash sortörés van (folytatásnak tekinthető).

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

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

Van egy technika, amellyel hosszú karakterláncokat írhatunk több sorba a kódban.

Ez az írásmód nem lehetséges string változók esetében.

# s = s1 s2 s3
# SyntaxError: invalid syntax

Számok és karakterláncok összekapcsolása\konkatenáció: +,+=üzemeltető,str(),format(),f-string

Más típusú + művelet hibát eredményez.

s1 = 'aaa'
s2 = 'bbb'

i = 100
f = 0.25

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

Ha egy numerikus értéket (pl. int típusú egész számot vagy float típusú lebegőpontos értéket) szeretne egy karakterlánccal összekapcsolni, konvertálja a numerikus értéket karakterlánc-típussá a str() segítségével, majd kapcsolja össze őket a + operátorral (vagy a += operátorral).

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

Ha egy szám formátumát, például a nulla kitöltését vagy a tizedesjegyeket szeretné átalakítani, használja a format() függvényt vagy a format() karakterlánc-módszert.

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

Természetesen az is lehetséges, hogy egy változó értékét közvetlenül egy karakterláncba ágyazzuk be formázás nélkül. Ezt egyszerűbb megírni, mint a + operátor használatát.

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

A formátum megadásának részleteit lásd a következő cikkben.

A Python 3.6 óta bevezetésre került egy f-string (f-string) nevű mechanizmus is, amely még egyszerűbben írható, mint a 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

Sztringekből álló listák (tömbök) összekapcsolása és összekötése: join()

A join() karakterlánc-módszer karakterláncok listájának egyetlen karakterlánccá történő összekapcsolására használható.

A következő módon kell megírni.

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

Hívja meg a join() metódust a 'string to insert between' kifejezéssel, és adja át [az összekapcsolandó karakterláncok listája] argumentumként.

Ha üres karakterláncot használunk, akkor [az összekapcsolandó karakterláncok listája] egyszerűen össze lesz kapcsolva, ha vesszőt használunk, akkor a karakterláncok vesszővel lesznek elválasztva, ha pedig újsor karaktert használunk, akkor minden egyes karakterláncelem újsorba lesz húzva.

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

Bár itt csak egy listára adunk példát, más iterálható objektumok, például tuple-ok is megadhatók a join() argumentumaként.

A join() paranccsal ellentétben a split() arra szolgál, hogy egy adott elválasztójel által határolt karakterláncot szétválasszon, és listaként kapja meg.

Számok listáinak (tömböknek) stringként történő összekapcsolása és kombinálása: join(),str()

Hiba lép fel, ha a join() argumentuma olyan lista, amelynek elemei nem karakterláncok.

l = [0, 1, 2]

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

Egy számokból álló lista egyetlen karakterlánccá történő összekapcsolásához alkalmazza az str() függvényt a lista minden egyes elemére, hogy a számokat karakterlánccá alakítsa, majd egyesítse őket a join() függvénnyel.

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

Ez generátor kifejezésként is leírható, ami a listamegértések generátoros változata. A generátor kifejezéseket zárójelbe kell tenni, de a zárójelek elhagyhatók, ha a generátor kifejezés egy függvény vagy metódus egyetlen argumentuma.

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

A generátor-kifejezések előnye általában az, hogy kevesebb memóriát használnak, mint a listakifejezések, de a generátor-kifejezések használatának nincs különösebb előnye, mivel a join() a belső feldolgozás során a generátorokat listákká alakítja. Valójában kezdettől fogva valamivel gyorsabb a listakifejezések használata.

A listakifejtésekről és a generátor-kifejezésekről bővebben a következő cikkben olvashat.