Python에서 줄 바꿈이 포함된 문자열 출력, 연결, 분할, 삭제 및 바꾸기

사업

다음은 Python에서 줄 바꿈이 포함된 문자열의 작업을 설명합니다.

  • 줄 바꿈을 포함하는 문자열 생성, 출력 출력(디스플레이)
    • 개행 문자(시스템에 따라 CR 및 LF 중 하나 또는 둘 다)\n(LF),\r\n(CR+LF)
    • 삼중 인용'',"""
    • 들여쓰기를 하고 싶다면
  • 줄 바꿈으로 문자열 목록 연결
  • 문자열을 개행 및 목록으로 분할:splitlines()
  • 줄 바꿈 코드 제거 및 교체
  • 후행 개행 없이 출력 출력

개행을 포함하는 문자열 생성, 출력 출력

개행 문자(시스템에 따라 CR 및 LF 중 하나 또는 둘 다)\n(LF),\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(LF)
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'

replace()를 반복하여 여러 줄 바꿈 코드를 바꿀 수 있지만 “\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

마지막에 추가할 문자열을 지정하는 print()의 end 인수의 기본값이 개행 기호이기 때문입니다.

끝에 줄 바꿈을 원하지 않는 경우 인수 end를 빈 문자열로 설정하면 끝 부분에 줄 바꿈 없이 출력이 출력됩니다.

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

인수 end는 임의의 문자열이 될 수 있습니다.

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

그러나 출력을 위해 문자열을 연결하려면 print()의 end 인수에서 지정하는 것보다 원래 문자열을 연결하는 것이 더 쉽습니다. 다음 기사를 참조하십시오.