Нижче описано роботу рядків, що містять нові рядки в Python.
- Створити рядок, що містить новий рядок, роздрукувати вихід (відображення)
- символ нового рядка (або CR та LF залежно від системи)
\n
(НЧ),\r\n
(CR+LF) - потрійна цитата
''
,"""
- Якщо ви хочете зробити відступ
- символ нового рядка (або 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(). Дивіться наступну статтю.