По-долу е описано как да конкатенирате и обединявате низове 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
Съществува техника за използване на този метод за записване на дълги низове на няколко реда в кода.
- Свързани статии:Писане на дълги низове на няколко реда в Python
Този метод на запис не е възможен за символни променливи.
# 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, формат (попълване на 0, експоненциален запис, шестнадесетична система и др.)
От версия 3.6 на Python е въведен и механизъм, наречен 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() преобразува генераторите в списъци при вътрешната си обработка. Всъщност от самото начало е малко по-бързо да се използват списъчни разбирания.
За повече информация относно разбирането на списъци и генераторните изрази вижте следната статия.
- Свързани статии:Как да използваме разбираеми списъци в Python