Вивести, об’єднати, розділити, видалити та замінити рядки, що містять нові рядки в Python

Бізнес

Нижче описано роботу рядків, що містять нові рядки в Python.

  • Створити рядок, що містить новий рядок, роздрукувати вихід (відображення)
    • символ нового рядка (або CR та LF залежно від системи)\n(НЧ),\r\n(CR+LF)
    • потрійна цитата'',"""
    • Якщо ви хочете зробити відступ
  • Об’єднайте список рядків з новими рядками
  • Розділіть рядок на новий рядок і список:splitlines()
  • Видаліть та замініть коди переведення рядків
  • Виведення на друк без закінчення нового рядка

Створіть рядок, що містить новий рядок, роздрукуйте вихідні дані

символ нового рядка (або CR та LF залежно від системи)\n(НЧ),\r\n(CR+LF)

Вставлення коду переходу рядка в рядок призведе до створення нового рядка.

s = 'Line1\nLine2\nLine3'
print(s)
# Line1
# Line2
# Line3

s = 'Line1\r\nLine2\r\nLine3'
print(s)
# Line1
# Line2
# Line3

Коди переведення рядків можна використовувати наступними способами. Деякі редактори дозволяють вибрати код розриву рядка.

Macを含むUnix系\n(НЧ)
Windows系\r\n(CR+LF)

потрійна цитата'',"""

Якщо для укладення рядка використовуються потрійні лапки, це буде рядок як є, включаючи нові рядки.

s = '''Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3

Якщо ви хочете зробити відступ

Потрійні лапки також є пробілами в рядку, тому, якщо ви спробуєте написати акуратно в коді та відступі, як показано нижче, будуть вставлені непотрібні пробіли.

s = '''
    Line1
    Line2
    Line3
    '''
print(s)
# 
#     Line1
#     Line2
#     Line3
#     

Використовуючи зворотну косу риску, щоб ігнорувати нові рядки в коді та зробити його продовженням, його можна записати так

Обкладіть кожен рядок символом ” або “” і додайте символ нового рядка ←n в кінці речення.

s = 'Line1\n'\
    'Line2\n'\
    'Line3'
print(s)
# Line1
# Line2
# Line3

Тут синтаксис полягає в тому, що послідовні рядкові літерали об’єднуються. Подробиці дивіться в наступній статті.

Якщо ви хочете додати відступ у рядку, просто додайте пробіл до рядка в кожному рядку.

s = 'Line1\n'\
    '    Line2\n'\
    '        Line3'
print(s)
# Line1
#     Line2
#         Line3

Крім того, оскільки розриви рядків можна вільно робити в дужках, наступне можна написати за допомогою дужок замість зворотної косої риски.

s = ('Line1\n'
     'Line2\n'
     'Line3')
print(s)
# Line1
# Line2
# Line3

s = ('Line1\n'
     '    Line2\n'
     '        Line3')
print(s)
# Line1
#     Line2
#         Line3

Якщо ви просто хочете вирівняти початок рядка, просто додайте зворотну косу риску до першого рядка потрійних лапок.

s = '''\
Line1
Line2
Line3'''
print(s)
# Line1
# Line2
# Line3

s = '''\
Line1
    Line2
        Line3'''
print(s)
# Line1
#     Line2
#         Line3

Об’єднайте список рядків з новими рядками

Рядковий метод join() можна використовувати для об’єднання списку рядків в один рядок.

Коли join() викликається з символу нового рядка, кожен елемент рядка з’єднується з новим рядком.

l = ['Line1', 'Line2', 'Line3']

s_n = '\n'.join(l)
print(s_n)
# Line1
# Line2
# Line3

print(repr(s_n))
# 'Line1\nLine2\nLine3'

s_rn = '\r\n'.join(l)
print(s_rn)
# Line1
# Line2
# Line3

print(repr(s_rn))
# 'Line1\r\nLine2\r\nLine3'

Як і в наведеному вище прикладі, вбудовану функцію repr() можна використовувати для перевірки рядків, які містять коди нового рядка як вони є.

Розділіть рядок на новий рядок і список:splitlines()

Метод рядка splitlines() можна використовувати для розбиття рядка на список нових рядків.

splitlines() розділить будь-який з наступних кодів розриву рядків. Вертикальні вкладки та розриви сторінок також розділені.

  • \n
  • \r\n
  • \v
  • \f
s = 'Line1\nLine2\r\nLine3'
print(s.splitlines())
# ['Line1', 'Line2', 'Line3']

Видаліть та замініть коди переведення рядків

Комбінуючи splitlines() і join(), можна видалити (видалити) коди нового рядка з рядка, що містить нові рядки, або замінити їх іншими рядками.

s = 'Line1\nLine2\r\nLine3'

print(''.join(s.splitlines()))
# Line1Line2Line3

print(' '.join(s.splitlines()))
# Line1 Line2 Line3

print(','.join(s.splitlines()))
# Line1,Line2,Line3

Також можлива пакетна зміна кодів переведення рядків. Навіть якщо коди розриву рядка змішані або невідомі, їх можна розділити за допомогою splitlines(), а потім об’єднати з потрібним кодом розриву рядка.

s_n = '\n'.join(s.splitlines())
print(s_n)
# Line1
# Line2
# Line3

print(repr(s_n))
# 'Line1\nLine2\nLine3'

Як згадувалося вище, splitlines() розділить будь-який код нового рядка, тому немає потреби особливо турбуватися про коди нового рядка у випадку методу, що поєднує splitlines() і join().

Якщо код нового рядка зрозумілий, його також можна замінити методом replace(), який замінює рядок.

s = 'Line1\nLine2\nLine3'

print(s.replace('\n', ''))
# Line1Line2Line3

print(s.replace('\n', ','))
# Line1,Line2,Line3

Зауважте, однак, що він не працюватиме, якщо містить інші коди переходу рядків, ніж очікувалося.

s = 'Line1\nLine2\r\nLine3'

s_error = s.replace('\n', ',')
print(s_error)
# ,Line3Line2

print(repr(s_error))
# 'Line1,Line2\r,Line3'

s_error = s.replace('\r\n', ',')
print(s_error)
# Line1
# Line2,Line3

print(repr(s_error))
# 'Line1\nLine2,Line3'

Можна замінити декілька кодів нового рядка, повторюючи заміну(), але це не працюватиме, якщо порядок неправильний, оскільки «\r\n» містить «\n». Метод, що поєднує splitlines() і join(), описаний вище, є безпечнішим, оскільки не потрібно турбуватися про коди переведення рядків.

s = 'Line1\nLine2\r\nLine3'

print(s.replace('\r\n', ',').replace('\n', ','))
# Line1,Line2,Line3

s_error = s.replace('\n', ',').replace('\r\n', ',')
print(s_error)
# ,Line3Line2

print(repr(s_error))
# 'Line1,Line2\r,Line3'

print(','.join(s.splitlines()))
# Line1,Line2,Line3

Використовуйте метод rstrip(), щоб видалити коди переходу рядка в кінці речення. rstrip() – це метод видалення пробілів (включаючи переводи рядка) у правому кінці рядка.

s = 'aaa\n'
print(s + 'bbb')
# aaa
# bbb

print(s.rstrip() + 'bbb')
# aaabbb

Виведення на друк без закінчення нового рядка

Функція print() за замовчуванням додає кінцевий новий рядок. Тому, якщо print() виконується послідовно, кожен результат виведення буде відображатися в новому рядку.

print('a')
print('b')
print('c')
# a
# b
# c

Це пояснюється тим, що значенням за замовчуванням аргументу end print(), який визначає рядок, який буде додано в кінці, є символ нового рядка.

Якщо ви не хочете, щоб у кінці був новий рядок, просто встановіть у кінці аргументу порожній рядок, і вихід буде виведено без нового рядка в кінці.

print('a', end='')
print('b', end='')
print('c', end='')
# abc

Кінець аргументу може бути будь-яким рядком.

print('a', end='-')
print('b', end='-')
print('c')
# a-b-c

Однак, якщо ви хочете об’єднати рядки для виведення, легше об’єднати вихідні рядки, ніж вказати їх у кінцевому аргументі print(). Дивіться наступну статтю.