Повезивање и спајање стрингова у Питхон-у: + оператори, функције придруживања итд.

Бусинесс

Следи опис како спојити и придружити стринг стр у Питхон-у.

  • Спајање и спајање више стрингова:+,+=оператер
  • Спојите и комбинујте бројеве и низове:+,+=оператер,str(),format(),ф-стринг
  • Спојите и комбинујте листе (низови) стрингова у један стринг: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(),ф-стринг

Операција + другог типа доводи до грешке.

s1 = 'aaa'
s2 = 'bbb'

i = 100
f = 0.25

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

Ако желите да повежете нумеричку вредност (нпр. целобројни тип инт или тип флоат са покретним зарезом) са стрингом, конвертујте нумеричку вредност у тип стринга помоћу стр(), а затим их спојите са + оператором (или += оператором ).

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

Ако желите да конвертујете формат броја, као што је попуњавање нуле или децимална места, користите функцију формат() или метод стринг формат().

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

Погледајте следећи чланак за детаље о томе како да наведете формат.

Од Питхон-а 3.6, такође је уведен механизам који се зове ф-стринг (ф-стринг), који је још једноставнији за писање од формата().

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()

Метода стрингова јоин() се може користити за спајање листе стрингова у један стринг.

Следеће је како то написати.

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

Позовите јоин() метод са ‘стринг то инсерт бетвеен’ и проследите [листу стрингова за спајање] као аргумент.

Ако се користи празан стринг, [листа стрингова за спајање] ће бити једноставно спојена, ако се користи зарез, стрингови ће бити раздвојени зарезима, а ако се користи знак за нови ред, сваки елемент стринга ће бити поново постављен.

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(),str()

До грешке долази ако је аргумент за јоин() листа чији елементи нису стрингови.

l = [0, 1, 2]

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

Да бисте спојили листу бројева у један стринг, примените функцију стр() на сваки елемент у нотацији разумевања листе да бисте бројеве претворили у стринг, а затим их спојите помоћу јоин().

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

Изрази генератора генерално имају предност коришћења мање меморије од разумевања листе, али нема посебне предности у коришћењу израза генератора пошто јоин() конвертује генераторе у листе у својој интерној обради. У ствари, мало је брже користити разумевање листе од почетка.

За више информација о разумевању листе и изразима генератора, погледајте следећи чланак.