Канкатэнацыя і аб’яднанне радкоў у Python: аператары +, функцыі аб’яднання і г.д.

Бізнэс

Ніжэй прыводзіцца апісанне таго, як аб’яднаць і далучыць радок str ў Python.

  • Канкатэнацыя і аб’яднанне некалькіх радкоў:+,+=аператар
  • Канкатэнацыя і аб’яднанне лікаў і радкоў:+,+=аператар,str(),format(),f-струн
  • Аб’ядноўваць і аб’ядноўваць спісы (масіў) радкоў у адзін радок:join()
  • Аб’ядноўваць і аб’ядноўваць спісы (масіў) лікаў у адзін радок:join(),str()

Канкатэнацыя і аб’яднанне некалькіх радкоў:+,+=аператар

злучэнне:+аператар

Аператар ++ можа быць выкарыстаны для канкатэнацыі наступных радковых літаралаў і радковых зменных

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

злучэнне:+=аператар

Аператар +=, аператар кумулятыўнага прысваення, таксама можа быць выкарыстаны. Радковая зменная з левага боку злучаецца з радком з правага боку, прысвойваецца і абнаўляецца.

s1 += s2
print(s1)
# aaabbb

Калі вы хочаце дадаць радок у канец радкавай зменнай, проста апрацуйце радковую зменную і любы радковы літарал (або іншую радковую зменную) аператарам +=.

s = 'aaa'

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

Паслядоўная канкатэнацыя радковых літаралаў

Калі вы проста пішаце радковыя літаралы побач, радковыя літэралы будуць злучаныя.

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

Дапушчальна мець прабел паміж двума радкамі або разрыў радка з зваротнай касой рысай (лічыцца працягам).

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

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

Існуе тэхніка, каб выкарыстоўваць гэта для запісу доўгіх радкоў на некалькіх радках у кодзе.

Гэты метад запісу немагчымы для радковых зменных.

# s = s1 s2 s3
# SyntaxError: invalid syntax

Лікавая і радковая канкатэнацыя/канкатэнацыя:+,+=аператар,str(),format(),f-струн

Аперацыя + іншага тыпу прыводзіць да памылкі.

s1 = 'aaa'
s2 = 'bbb'

i = 100
f = 0.25

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

Калі вы хочаце аб’яднаць лікавае значэнне (напрыклад, цэлы тып int або тып з плаваючай кропкай float) з радком, пераўтварыце лікавае значэнне ў радкавы тып з дапамогай str(), а затым злучыце іх з дапамогай аператара + (або +=). ).

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

Калі вы хочаце пераўтварыць фармат ліку, напрыклад, з запаўненнем нуля або дзесятковымі знакамі, выкарыстоўвайце функцыю format() або метад радка 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

Вядома, таксама можна ўбудаваць значэнне зменнай непасрэдна ў радок без фарматавання. Гэта прасцей пісаць, чым выкарыстоўваць аператар +.

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

Глядзіце наступны артыкул, каб даведацца, як задаць фармат.

Пачынаючы з Python 3.6, таксама быў уведзены механізм пад назвай f-strings (f-string), які яшчэ прасцей пісаць, чым 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

Канкатэнацыя і аб’яднанне спісаў (масіўаў) радкоў:join()

Радковы метад join() можа быць выкарыстаны для канкатэнацыі спісу радкоў у адзін радок.

Ніжэй паказана, як гэта напісаць.

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

Выклічце метад join() з “радок для ўстаўкі паміж” і перадайце [спіс радкоў для канкатэнацыі] у якасці аргумента.

Калі выкарыстоўваецца пусты радок, [спіс радкоў для аб’яднання] будзе проста злучаны, калі выкарыстоўваецца коска, радкі будуць падзеленыя коскамі, а калі выкарыстоўваецца сімвал новага радка, кожны элемент радка будзе пераведзены на новы радок.

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

Хоць тут прыведзены толькі прыклад спісу, іншыя ітэрацыйныя аб’екты, такія як картэжы, таксама могуць быць вызначаны ў якасці аргументаў для join().

У адрозненне ад join(), split() выкарыстоўваецца для падзелу радка, абмежаванага пэўным падзельнікам, і атрымання яго ў выглядзе спісу.

Аб’ядноўваць і аб’ядноўваць спісы (масіў) лікаў у выглядзе радкоў:join(),str()

Памылка ўзнікае, калі аргумент join() з’яўляецца спісам, элементы якога не з’яўляюцца радкамі.

l = [0, 1, 2]

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

Каб аб’яднаць спіс лікаў у адзін радок, прымяніце функцыю str() да кожнага элемента ў натацыі разумення спісу, каб пераўтварыць лічбы ў радок, а затым далучыце іх пры дапамозе join().

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

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

Выразы генератара звычайна маюць перавагу ў выкарыстанні меншай памяці, чым у спісах, але няма асаблівай перавагі ў выкарыстанні выразаў генератара, паколькі join() пераўтворыць генератары ў спісы ў сваёй унутранай апрацоўцы. Насамрэч, выкарыстоўваць разуменне спісу з самага пачатку крыху хутчэй.

Для атрымання дадатковай інфармацыі аб разуменні спісу і выразах генератара глядзіце наступны артыкул.

Copied title and URL