Конкатенація та об’єднання рядків у 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-рядки (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() перетворює генератори на списки під час внутрішньої обробки. Насправді, трохи швидше використовувати осмислення списку з самого початку.

Додаткову інформацію про розуміння списку та вирази генератора див. у наступній статті.