Slijedi opis kako spojiti i spojiti string str u Pythonu.
- Spajanje i spajanje više nizova:
+
,+=
operater - Spojite i kombinirajte brojeve i nizove:
+
,+=
operater,str()
,format()
,f-string - Spojite i kombinirajte popise (nizove) nizova u jedan niz:
join()
- Spojite i kombinirajte popise (nizove) brojeva u jedan niz:
join()
,str()
Spajanje i spajanje više nizova:+,+=operater
vezu:+operater
Operator ++ može se koristiti za spajanje sljedećih literala niza i varijabli niza
- …’
- “…”
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
vezu:+=operater
Operator +=, kumulativni operator dodjele, također se može koristiti. Varijabla niza na lijevoj strani je povezana sa nizom na desnoj strani, te se dodjeljuje i ažurira.
s1 += s2
print(s1)
# aaabbb
Ako želite dodati niz na kraj varijable stringa, jednostavno obradite varijablu niza i bilo koji literal niza (ili drugu varijablu niza) s += operatorom.
s = 'aaa'
s += 'xxx'
print(s)
# aaaxxx
Uzastopna konkatenacija literala niza
Ako jednostavno pišete string literale jedan pored drugog, string literali će biti spojeni.
s = 'aaa''bbb''ccc'
print(s)
# aaabbbccc
Prihvatljivo je imati razmak između dva retka ili obrnutu kosu crtu (smatra se nastavkom).
s = 'aaa' 'bbb' 'ccc'
print(s)
# aaabbbccc
s = 'aaa'\
'bbb'\
'ccc'
print(s)
# aaabbbccc
Postoji tehnika kojom se ovo može koristiti za pisanje dugih nizova u više redaka u kodu.
- povezani članci:Pisanje dugih nizova u više redaka u Pythonu
Ova metoda pisanja nije moguća za varijable niza.
# s = s1 s2 s3
# SyntaxError: invalid syntax
Brojčana i nizova konkatenacija/konkatenacija:+,+=operater,str(),format(),f-string
Operacija + drugog tipa rezultira pogreškom.
s1 = 'aaa'
s2 = 'bbb'
i = 100
f = 0.25
# s = s1 + i
# TypeError: must be str, not int
Ako želite spojiti brojčanu vrijednost (npr. cjelobrojni tip int ili tip float s pomičnim zarezom) sa nizom, pretvorite brojčanu vrijednost u vrstu niza pomoću str(), a zatim ih spojite s + operatorom (ili += operatorom ).
s = s1 + '_' + str(i) + '_' + s2 + '_' + str(f)
print(s)
# aaa_100_bbb_0.25
Ako želite pretvoriti format broja, kao što su nula ili decimalna mjesta, upotrijebite funkciju format() ili metodu niza 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
Naravno, također je moguće ugraditi vrijednost varijable izravno u niz bez formatiranja. Ovo je jednostavnije napisati nego koristiti operator +.
s = '{}_{}_{}_{}'.format(s1, i, s2, f)
print(s)
# aaa_100_bbb_0.25
Pogledajte sljedeći članak za pojedinosti o tome kako odrediti format.
- povezani članci:Konverzija formata u Pythonu, format (ispunjavanje 0, eksponencijalni zapis, heksadecimalni itd.)
Od Pythona 3.6 uveden je i mehanizam nazvan f-strings (f-string), koji je čak i jednostavniji za pisanje od formata().
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
Spojite i spojite liste (nizovi) nizova:join()
Metoda stringova join() može se koristiti za spajanje popisa nizova u jedan niz.
Sljedeće je kako to napisati.
'String to be inserted between'.join([List of strings to be concatenated])
Pozovite metodu join() s ‘stringom za umetanje između’ i proslijedite [popis nizova za spajanje] kao argument.
Ako se koristi prazan niz, [popis nizova za spajanje] jednostavno će se spojiti, ako se koristi zarez, nizovi će biti razdvojeni zarezima, a ako se koristi znak za novi red, svaki element niza bit će pretvoren u novi red.
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
Iako je ovdje dat samo primjer popisa, drugi objekti koji se mogu ponavljati, kao što su tuple, također se mogu navesti kao argumenti za join().
Za razliku od join(), split() se koristi za cijepanje niza ograničenog određenim graničnikom i dobivanje ga kao popis.
Spojite i kombinirajte popise (nizove) brojeva kao nizove:join(),str()
Do pogreške dolazi ako je argument za join() popis čiji elementi nisu nizovi.
l = [0, 1, 2]
# s = '-'.join(l)
# TypeError: sequence item 0: expected str instance, int found
Da biste spojili popis brojeva u jedan niz, primijenite funkciju str() na svaki element u zapisu za razumijevanje popisa da biste brojeve pretvorili u niz, a zatim ih spojite pomoću join().
s = '-'.join([str(n) for n in l])
print(s)
# 0-1-2
Također se može napisati kao izraz generatora, koji je generatorska verzija shvaćanja popisa. Izrazi generatora zatvoreni su u zagradama, ali zagrade se mogu izostaviti ako je izraz generatora jedini argument funkcije ili 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
Izrazi generatora općenito imaju prednost korištenja manje memorije od shvaćanja popisa, ali nema posebne prednosti u korištenju izraza generatora budući da join() pretvara generatore u liste u svojoj internoj obradi. Zapravo, malo je brže koristiti shvaćanje popisa od početka.
Za više informacija o shvaćanjima popisa i izrazima generatora, pogledajte sljedeći članak.
- povezani članci:Kako koristiti Python popis razumijevanja