Följande är en beskrivning av hur man sammanfogar och sammanfogar strängar str i Python.
- Sammanlänkning och sammanslagning av flera strängar:
+
,+=
operatör - Sammanfoga och kombinera siffror och strängar:
+
,+=
operatör,str()
,format()
,f-sträng - Sammanfoga och kombinera listor (matriser) av strängar till en enda sträng.:
join()
- Sammanfoga och kombinera listor (matriser) med siffror till en enda sträng.:
join()
,str()
Sammanlänkning och sammanslagning av flera strängar: +, +=operatör
anslutning: +operatör
Operatorn ++ kan användas för att sammanfoga följande stränglitteraler och strängvariabler
- '…'
- ”…”
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
anslutning: +=operatör
Operatorn +=, en kumulativ tilldelningsoperator, kan också användas. Strängvariabeln på vänster sida sammanfogas med strängen på höger sida och tilldelas och uppdateras.
s1 += s2
print(s1)
# aaabbb
Om du vill lägga till en sträng i slutet av en strängvariabel bearbetar du helt enkelt strängvariabeln och en stränglitteral (eller en annan strängvariabel) med operatorn +=.
s = 'aaa'
s += 'xxx'
print(s)
# aaaxxx
Sammanfogning av stränglitteraler i följd
Om du bara skriver stränglitteraler sida vid sida kommer stränglitteralerna att sammanlänkas.
s = 'aaa''bbb''ccc'
print(s)
# aaabbbccc
Det är godtagbart att ha ett mellanslag mellan två rader eller ett backslash-linjeskifte (betraktas som en fortsättning).
s = 'aaa' 'bbb' 'ccc'
print(s)
# aaabbbccc
s = 'aaa'\
'bbb'\
'ccc'
print(s)
# aaabbbccc
Det finns en teknik för att använda detta för att skriva långa strängar på flera rader i koden.
- Relaterade artiklar:Skriva långa strängar på flera rader i Python
Denna skrivmetod är inte möjlig för strängvariabler.
# s = s1 s2 s3
# SyntaxError: invalid syntax
Numerisk och strängar sammanlänkning\konkätning: +,+=operatör,str(),format(),f-sträng
En +-operation av en annan typ leder till ett fel.
s1 = 'aaa'
s2 = 'bbb'
i = 100
f = 0.25
# s = s1 + i
# TypeError: must be str, not int
Om du vill sammanfoga ett numeriskt värde (t.ex. heltalstyp int eller flyttalstyp float) med en sträng konverterar du det numeriska värdet till en strängtyp med str() och sammanfogar dem sedan med operatören + (eller +=).
s = s1 + '_' + str(i) + '_' + s2 + '_' + str(f)
print(s)
# aaa_100_bbb_0.25
Om du vill konvertera formatet för ett tal, t.ex. nollställen eller decimaler, använder du funktionen format() eller strängmetoden 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
Det är naturligtvis också möjligt att bädda in värdet av en variabel direkt i en sträng utan formatering. Detta är enklare att skriva än att använda operatören +.
s = '{}_{}_{}_{}'.format(s1, i, s2, f)
print(s)
# aaa_100_bbb_0.25
I följande artikel finns information om hur du anger formatet.
- Relaterade artiklar:Formatkonvertering i Python, format (0-fyllning, exponentiell notation, hexadecimal, etc.)
Sedan Python 3.6 har en mekanism som kallas f-strings (f-string) införts, som är ännu enklare att skriva än 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
Sammanfoga och sammanfoga listor (matriser) av strängar: join()
Strängmetoden join() kan användas för att sammanfoga en lista med strängar till en enda sträng.
Så här kan du skriva den.
'String to be inserted between'.join([List of strings to be concatenated])
Kalla join()-metoden med ”sträng som ska infogas mellan” och skicka [lista över strängar som ska sammanfogas] som ett argument.
Om en tom sträng används kommer [lista över strängar som ska sammanfogas] helt enkelt att sammanfogas, om ett kommatecken används kommer strängarna att kommasepareras, och om ett newline-tecken används kommer varje strängelement att newlinas.
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
Även om endast ett exempel på en lista ges här, kan andra iterbara objekt, t.ex. tupler, också anges som argument till join().
Till skillnad från join() används split() för att dela upp en sträng som avgränsas av en specifik avgränsare och få den som en lista.
Sammanfoga och kombinera listor (matriser) med tal som strängar.: join(),str()
Ett fel uppstår om argumentet till join() är en lista vars element inte är strängar.
l = [0, 1, 2]
# s = '-'.join(l)
# TypeError: sequence item 0: expected str instance, int found
Om du vill sammanfoga en lista med siffror till en enda sträng tillämpar du funktionen str() på varje element i listans förståelse-notation för att omvandla siffrorna till en sträng och sammanfogar dem sedan med join().
s = '-'.join([str(n) for n in l])
print(s)
# 0-1-2
Det kan också skrivas som ett generatoruttryck, vilket är en generatorversion av list comprehensions. Generatoruttryck omsluts av parenteser, men parenteserna kan utelämnas om generatoruttrycket är det enda argumentet till en funktion eller metod.
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
Generatoruttryck har i allmänhet fördelen att de använder mindre minne än listförståelser, men det finns ingen särskild fördel med att använda generatoruttryck eftersom join() omvandlar generatorer till listor i sin interna bearbetning. Det är faktiskt något snabbare att använda list comprehensions från början.
Mer information om listförståelser och generatoruttryck finns i följande artikel.
- Relaterade artiklar:Hur man använder Pythons listförståelser