Di Python de hevgirtin û girêdana rêzan: + operator, fonksiyonên tevlîbûnê, hwd.

Dikan

Ya jêrîn ravekirinek e ka meriv çawa di Python-ê de string str-ê çawa bi hev ve girêdide û tevlê dibe.

  • Têkilî û yekkirina çend rêzan:+,+=makînevan
  • Hêjmar û rêzan bi hev ve girêdidin û li hev dikin:+,+=makînevan,str(),format(),f-string
  • Lîsteyên (array) rêzan di nav rêzek yekane de bi hev ve girêdin û bikin:join()
  • Lîsteyên (array) jimareyan di nav rêzek yekane de bi hev ve girêdin û bikin:join(),str()

Têkilî û yekkirina çend rêzan:+,+=makînevan

têkêlî:+makînevan

Operatora ++ dikare ji bo girêdana rêzikên jêrîn û guhêrbarên rêzikê were bikar anîn

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

têkêlî:+=makînevan

Operatora +=, operatorek peywirdarkirina kumulatîf jî dikare were bikar anîn. Guherbara rêzê ya li milê çepê bi xêza li milê rastê ve tê girêdan, û tê destnîşankirin û nûvekirin.

s1 += s2
print(s1)
# aaabbb

Heke hûn dixwazin xêzekê li dawiya guhêrbarek rêzikê lê zêde bikin, bi tenê guhêrbara rêzikê û her rêzika biwêj (an guhêrbarek rêzek din) bi operatora += re pêvajoyê bikin.

s = 'aaa'

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

Lihevhatina lihevhatina peyvên rêzikan

Ger hûn bi tenê rêzikên rêzikan li kêleka hev binivîsin, wêjeyên rêzikan bi hev ve werin girêdan.

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

Meqbûl e ku cîhek di navbera du rêzan de an veqetandina xêzek paşverû (berdewamek tê hesibandin) hebe.

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

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

Teknîkek heye ku meriv vê bikar bîne ji bo nivîsandina rêzikên dirêj li ser pir rêzikên kodê.

Ev rêbaza nivîsandinê ji bo guhêrbarên rêzikê ne mumkin e.

# s = s1 s2 s3
# SyntaxError: invalid syntax

Lihevhatina/tevlihevkirina hejmarî û rêzikan:+,+=makînevan,str(),format(),f-string

Operasyona + ya celebek cûda di xeletiyek de encam dide.

s1 = 'aaa'
s2 = 'bbb'

i = 100
f = 0.25

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

Heke hûn dixwazin nirxek jimareyî (mînak, tîpa yekjimar int an tîpa float-xala float) bi rêzekê ve girêbidin, nirxa hejmarî bi str() veguherînin celebek rêzikan û dûv re wan bi operatora + (an += operator) re bikin yek. ).

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

Heke hûn dixwazin formata jimarekê biguhezînin, wek mînak cîhên sifir-dagirtin an dehek, fonksiyona format() an formata rêbaza rêzikê ().

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

Bê guman, di heman demê de gengaz e ku meriv nirxa guhêrbar rasterast bêyî formatkirin di nav rêzek de bihêle. Ev ji karanîna + operator hêsantir e ku meriv binivîse.

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

Ji bo hûrguliyên li ser ka meriv çawa formê diyar dike li gotara jêrîn binêre.

Ji Python 3.6 ve, mekanîzmayek bi navê f-strings (f-string) jî hate destnîşan kirin, ku nivîsandina wê ji formata(-ê) hê hêsantir e.

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

Lîsteyên (array) rêzan bi hev ve girêdidin û tev li hev dikin:join()

Rêbaza rêzê join() dikare were bikar anîn da ku navnîşek rêzikan bi yek rêzikan ve girêbide.

Li jêr çawa tê nivîsandin.

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

Rêbaza join() ya bi ‘rêza ku têxin navberê’ bang bikin û [lîsteya rêzikên ji bo hevgirtinê] wekî arguman derbas bikin.

Heke rêzikek vala were bikar anîn, [lîsteya rêzikên ku bêne hevgirtin] dê bi hêsanî were girêdan, heke xêzek were bikar anîn, rêz dê bi qertaf bêne veqetandin, û heke karakterek nû were bikar anîn, dê her hêmanek rêzek nû were xet kirin.

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

Her çend tenê mînakek navnîşek li vir tê dayîn, tiştên din ên dubarekirî yên wekî tîrêjan dikarin wekî argumanên ku ji bo tevlêbûnê () jî bêne destnîşan kirin.

Berevajî join(), split() tê bikar anîn da ku rêzek ku ji hêla veqetandek taybetî ve hatî veqetandin veqetîne û wê wekî navnîşek werbigire.

Lîsteyên (array) jimareyan wek rêzikan li hev bixin û li hev bikin:join(),str()

Heke argumana tevlêbûnê() lîsteyek e ku hêmanên wê ne rêzik in xeletiyek çêdibe.

l = [0, 1, 2]

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

Ji bo ku lîsteyek hejmaran bi yek rêzikan ve girêbide, fonksiyona str() li ser her hêmanek di navnîşana têgihîştina navnîşê de bicîh bike da ku jimareyan veguherîne rêzek, û dûv re wan bi join() re bike yek.

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

Di heman demê de ew dikare wekî vegotinek çêker were nivîsandin, ku guhertoyek çêker a têgihîştina navnîşê ye. Gotinên jeneratorê di nav parantezê de têne girtin, lê heke bêjeya jenerator tenê argumana fonksiyonek an rêbazek be, ew parantez dikarin bêne derxistin.

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

Vebêjên jeneratorê bi gelemperî xwedan avantaja karanîna kêm bîra ji têgihiştinên navnîşê ne, lê ji ber ku join() di pêvajoya xweya hundurîn de jeneratoran vediguherîne navnîşan. Bi rastî, karanîna têgihîştina navnîşê ji destpêkê ve hinekî zûtir e.

Ji bo bêtir agahdarî li ser têgihîştina navnîş û vegotinên hilberîner, li gotara jêrîn binêrin.