[python] 후행 줄 바꿈을 제거하려면 어떻게해야합니까?

chomp문자열이 줄 바꿈 인 경우 문자열의 마지막 문자를 제거하는 Perl 함수 와 동등한 Python은 무엇입니까 ?



답변

방법을 시도 rstrip()하십시오 (doc Python 2Python 3 참조 )

>>> 'test string\n'.rstrip()
'test string'

Python의 rstrip()메소드 는 Perl과 같이 하나의 줄 바꿈이 아니라 기본적으로 모든 종류의 후행 공백을 제거 합니다chomp .

>>> 'test string \n \r\n\n\r \n\n'.rstrip()
'test string'

줄 바꿈 만 제거하려면 :

>>> 'test string \n \r\n\n\r \n\n'.rstrip('\n')
'test string \n \r\n\n\r '

방법 lstrip()과 방법도 있습니다 strip().

>>> s = "   \n\r\n  \n  abc   def \n\r\n  \n  "
>>> s.strip()
'abc   def'
>>> s.lstrip()
'abc   def \n\r\n  \n  '
>>> s.rstrip()
'   \n\r\n  \n  abc   def'


답변

그리고 줄 바꿈 문자없이 줄을 얻는 “pythonic”방법은 splitlines ()라고 말합니다.

>>> text = "line 1\nline 2\r\nline 3\nline 4"
>>> text.splitlines()
['line 1', 'line 2', 'line 3', 'line 4']


답변

줄 끝 (EOL) 문자를 제거하는 정식 방법은 문자열 rstrip () 메서드를 사용하여 후행 \ r 또는 \ n을 제거하는 것입니다. 다음은 Mac, Windows 및 Unix EOL 문자의 예입니다.

>>> 'Mac EOL\r'.rstrip('\r\n')
'Mac EOL'
>>> 'Windows EOL\r\n'.rstrip('\r\n')
'Windows EOL'
>>> 'Unix EOL\n'.rstrip('\r\n')
'Unix EOL'

rstrip의 매개 변수로 ‘\ r \ n’을 사용하면 ‘\ r’또는 ‘\ n’의 후행 조합이 제거됩니다. 그것이 위의 세 가지 경우 모두에서 작동하는 이유입니다.

이 뉘앙스는 드문 경우에 중요합니다. 예를 들어, HL7 메시지가 포함 된 텍스트 파일을 처리해야했습니다. HL7 표준에는 EOL 문자로 후미 ‘\ r’이 필요합니다. 이 메시지를 사용하고있는 Windows 시스템에는 자체 ‘\ r \ n’EOL 문자가 추가되었습니다. 따라서 각 줄의 끝은 ‘\ r \ r \ n’과 같았습니다. rstrip ( ‘\ r \ n’)을 사용하면 전체 ‘\ r \ r \ n’을 제거했을 것입니다. 이 경우 마지막 두 문자를 대신 잘라 버렸습니다.

Perl의 chomp기능 과 달리 문자열의 끝 부분에서 지정된 문자를 모두 제거합니다.

>>> "Hello\n\n\n".rstrip("\n")
"Hello"


답변

rstrip은 문자열을 수정하지 않기 때문에 Perl의 chomp ()와 똑같이 작동하지 않습니다. 즉, Perl에서 :

$x="a\n";

chomp $x

결과 $x"a".

그러나 파이썬에서는 :

x="a\n"

x.rstrip()

의 값 x여전히 임을 의미합니다 "a\n". 심지어 x=x.rstrip()줄 바꿈이 아니라 문자열 끝에서 모든 공백을 제거하기 때문에 항상 동일한 결과를 제공하지는 않습니다.


답변

나는 이런 식으로 사용할 수 있습니다 :

import os
s = s.rstrip(os.linesep)

문제 rstrip("\n")는 아마도 라인 분리기가 이식 가능한지 확인하고 싶을 것입니다. (일부 구식 시스템은 사용한다는 소문이 있습니다 "\r\n"). 다른 단점은 rstrip반복되는 공백을 제거 한다는 것입니다. 바라건대 os.linesep올바른 문자가 포함 되기를 바랍니다 . 위의 내용은 저에게 효과적입니다.


답변

을 사용할 수 있습니다 line = line.rstrip('\n'). 이것은 줄 끝이 아니라 줄 끝에서 모든 줄 바꿈을 제거합니다.


답변

s = s.rstrip()

문자열 끝에서 모든 줄 바꿈을 제거합니다 s. rstrip원래 문자열을 수정하는 대신 새 문자열을 반환 하므로 할당이 필요 합니다.