Järgnevalt kirjeldatakse, kuidas ühendada ja liita string str Pythonis.
- Mitme stringi ühendamine ja ühendamine:
+
,+=
operaator - Numbrite ja stringide ühendamine ja kombineerimine:
+
,+=
operaator,str()
,format()
,f-string - Stringide loetelude (massiivid) ühendamine ja ühendamine üheks stringiks:
join()
- Numbrite loetelude (massiivid) ühendamine ja kombineerimine üheks stringiks:
join()
,str()
Mitme stringi ühendamine ja ühendamine: +, +=operaator
ühendus: +operaator
Operaatorit ++ saab kasutada järgmiste string literaalide ja string muutujate ühendamiseks
- '…'
- “…”
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
ühendus: +=operaator
Samuti võib kasutada kumulatiivset määramisoperaatorit +=. Vasakpoolne string-muutuja konkateeritakse parempoolse stringiga, omistatakse ja uuendatakse.
s1 += s2
print(s1)
# aaabbb
Kui soovite lisada string-muutuja lõppu stringi, töötle lihtsalt string-muutujat ja mis tahes string-literaali (või teist string-muutujat) operaatoriga +=.
s = 'aaa'
s += 'xxx'
print(s)
# aaaxxx
Stringliteraalide järjestikune ühendamine
Kui te lihtsalt kirjutate stringiliteraalid kõrvuti, siis stringiliteraalid ühendatakse.
s = 'aaa''bbb''ccc'
print(s)
# aaabbbccc
Kahe rea vahel on lubatud kasutada tühikut või kaldkriipsu reavahet (seda loetakse jätkuks).
s = 'aaa' 'bbb' 'ccc'
print(s)
# aaabbbccc
s = 'aaa'\
'bbb'\
'ccc'
print(s)
# aaabbbccc
On olemas tehnika, mida saab kasutada pikkade stringide kirjutamiseks mitmele reale koodis.
- Seotud artiklid:Pikkade stringide kirjutamine mitmes reas Pythonis
See kirjutamismeetod ei ole võimalik string-muutujate puhul.
# s = s1 s2 s3
# SyntaxError: invalid syntax
Numbrite ja stringide ühendamine\konkatenatsioon: +,+=operaator,str(),format(),f-string
Teist tüüpi + operatsioon põhjustab vea.
s1 = 'aaa'
s2 = 'bbb'
i = 100
f = 0.25
# s = s1 + i
# TypeError: must be str, not int
Kui soovite liita numbrilist väärtust (nt täisarvu tüüpi int või ujukoma tüüpi float) stringiga, teisendage numbriline väärtus stringitüübiks funktsiooniga str() ja seejärel liita need operaatoriga + (või += operaatoriga).
s = s1 + '_' + str(i) + '_' + s2 + '_' + str(f)
print(s)
# aaa_100_bbb_0.25
Kui soovite teisendada numbri formaati, näiteks nullide või kümnendkohtade täitmist, kasutage funktsiooni format() või stringi meetodit 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
Loomulikult on võimalik muutuja väärtust ka otse stringi ilma vormindamiseta sisse põimida. Seda on lihtsam kirjutada kui + operaatorit kasutades.
s = '{}_{}_{}_{}'.format(s1, i, s2, f)
print(s)
# aaa_100_bbb_0.25
Üksikasjalikumat teavet formaadi määramise kohta leiate järgmisest artiklist.
- Seotud artiklid:Formaatide teisendamine Pythonis, formaat (0-täitmine, eksponentsiaalne märkimine, heksadekaalarvud jne).
Alates Python 3.6 on kasutusele võetud ka mehhanism nimega f-string (f-string), mida on isegi lihtsam kirjutada kui 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
Stringide loetelude (massiivid) ühendamine ja liitmine: join()
Stringimeetodit join() saab kasutada stringide loendi ühendamiseks üheks stringiks.
Järgnevalt on kirjeldatud, kuidas seda kirjutada.
'String to be inserted between'.join([List of strings to be concatenated])
Kutsu meetodit join() koos 'string to insert between' ja anna argumendiks [list of strings to concatenate].
Kui kasutatakse tühja stringi, siis [ühendatavate stringide loend] lihtsalt ühendatakse, kui kasutatakse koma, siis eraldatakse stringid komadega, ja kui kasutatakse newline-märki, siis iga stringi element eraldatakse newline'iga.
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
Kuigi siin on toodud ainult loetelu näide, saab join() argumentidena esitada ka teisi iteratiivseid objekte, näiteks tupleid.
Erinevalt join() funktsioonist kasutatakse funktsiooni split() selleks, et jagada konkreetse eraldajaga piiratud string ja saada see loeteluna.
Numbrite loetelude (massiivid) ühendamine ja kombineerimine stringidena: join(),str()
Tekib viga, kui join() argument on nimekiri, mille elemendid ei ole stringid.
l = [0, 1, 2]
# s = '-'.join(l)
# TypeError: sequence item 0: expected str instance, int found
Numbrite loendi ühendamiseks üheks stringiks tuleb rakendada funktsiooni str() loendi iga elemendi suhtes, et teisendada numbrid stringiks, ja seejärel liita need funktsiooniga join().
s = '-'.join([str(n) for n in l])
print(s)
# 0-1-2
Seda saab kirjutada ka generaatorväljendina, mis on loendi mõistete generaatorversioon. Generaatorväljendid on suletud sulgudesse, kuid sulgud võib ära jätta, kui generaatorväljend on funktsiooni või meetodi ainus argument.
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
Generaatorväljendite eeliseks on üldiselt see, et nad kasutavad vähem mälu kui loendi mõisted, kuid generaatorväljendite kasutamisel ei ole erilist eelist, kuna join() konverteerib generaatorid oma sisemises töötlemises loenditeks. Tegelikult on algusest peale veidi kiirem kasutada nimekirjade mõistmist.
Lisateavet loendi mõistete ja generaatorväljendite kohta leiate järgmisest artiklist.
- Seotud artiklid:Kuidas kasutada Pythoni loetelusid