Sameina og sameina strengi í Python: + rekstraraðilar, sameina aðgerðir o.s.frv.

Viðskipti

Eftirfarandi er lýsing á því hvernig á að sameina og tengja streng str í Python.

  • Sameina og sameina marga strengi:+,+=rekstraraðili
  • Sameina og sameina tölur og strengi:+,+=rekstraraðili,str(),format(),f-strengur
  • Sameina og sameina lista (fylki) af strengjum í einn streng:join()
  • Sameina og sameina lista (fylki) af tölum í einn streng:join(),str()

Sameina og sameina marga strengi:+,+=rekstraraðili

Tenging:+rekstraraðili

++ rekstraraðilann er hægt að nota til að sameina eftirfarandi strengjabókstafi og strengjabreytur

  • …’
  • „…“
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

Tenging:+=rekstraraðili

Einnig er hægt að nota += rekstraraðilann, uppsafnaðan úthlutunaraðgerð. Strengjabreytan vinstra megin er tengd við strenginn hægra megin og er úthlutað og uppfærð.

s1 += s2
print(s1)
# aaabbb

Ef þú vilt bæta streng við enda strengsbreytu, vinnurðu einfaldlega úr strengjabreytunni og hvaða streng sem er (eða annarri strengjabreytu) með += stjórnandanum.

s = 'aaa'

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

Samtenging strengjabókstafa

Ef þú skrifar einfaldlega strengjabókstafi hlið við hlið, verða strengjabókstafirnir samtengdir.

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

Það er ásættanlegt að hafa bil á milli tveggja lína eða bakská línuskil (talið sem framhald).

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

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

Það er tækni til að nota þetta til að skrifa langa strengi á margar línur í kóðanum.

Þessi ritaðferð er ekki möguleg fyrir strengjabreytur.

# s = s1 s2 s3
# SyntaxError: invalid syntax

Töluleg og strengjatenging/samtenging:+,+=rekstraraðili,str(),format(),f-strengur

A + aðgerð af annarri gerð leiðir til villu.

s1 = 'aaa'
s2 = 'bbb'

i = 100
f = 0.25

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

Ef þú vilt tengja saman tölugildi (td heiltölugerð int eða flottalsgerð flot) við streng, umbreyttu tölugildinu í strengjagerð með str() og tengdu þau síðan saman við + (eða +=). ).

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

Ef þú vilt umbreyta sniði tölu, eins og núllfyllingu eða aukastafi, notaðu format() fallið eða strengjaaðferðarsnið().

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

Auðvitað er líka hægt að fella gildi breytu beint í streng án þess að forsníða. Þetta er einfaldara að skrifa en að nota + stjórnandann.

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

Sjá eftirfarandi grein fyrir upplýsingar um hvernig á að tilgreina sniðið.

Síðan Python 3.6 hefur einnig verið kynnt vélbúnaður sem kallast f-strengir (f-strengur), sem er jafnvel einfaldara að skrifa en 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

Sameina og tengja lista (fylki) af strengjum:join()

Strengjaaðferðina join() er hægt að nota til að sameina lista yfir strengi í einn streng.

Eftirfarandi er hvernig á að skrifa það.

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

Kallaðu join() aðferðina með ‘streng til að setja á milli’ og sendu [listi yfir strengi til að sameina] sem rök.

Ef tómur strengur er notaður verður [listi yfir strengi sem á að sameina] einfaldlega samkeyrður, ef kommur er notaður verða strengirnir aðskildir með kommum og ef nýlínustafur er notaður verður hver strengsþáttur nýlína.

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ðeins dæmi um lista sé gefið hér, er hægt að tilgreina aðra endurtekna hluti eins og tuples sem rök fyrir join() líka.

Öfugt við join() er split() notað til að skipta streng sem afmarkast af ákveðnu afmörkunarmerki og fá hann sem lista.

Sameina og sameina lista (fylki) af tölum sem strengi:join(),str()

Villa kemur upp ef röksemdin til að join() er listi þar sem þættirnir eru ekki strengir.

l = [0, 1, 2]

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

Til að sameina lista yfir tölur í einn streng, notaðu str() fallið á hvert stak í listaskilningi til að breyta tölunum í streng og sameina þær síðan með join().

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

Það er líka hægt að skrifa það sem rafall tjáningu, sem er rafall útgáfa af listaskilningi. Rafallatjáning er innan sviga, en svigunum má sleppa ef rafallatjáningin er einu rökin fyrir falli eða aðferð.

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

Rafallatjáningar hafa almennt þann kost að nota minna minni en listaskilning, en það er enginn sérstakur kostur við að nota rafallatjáningar þar sem join() breytir rafala í lista í innri vinnslu þess. Reyndar er örlítið fljótlegra að nota listaskilning frá upphafi.

Nánari upplýsingar um listaskilning og rafallatjáningar er að finna í eftirfarandi grein.