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


1688

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



3
A + 답변은 플랫폼에 open()적합한 'newline = ...' 매개 변수 가 있는 파일 을 잊어 버린 경우 (일반적인 개행 지원), 명시 적으로 제거하지 않아도됩니다.
smci

답변:


1868

방법을 시도 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'

22
나는 파이썬 사람이 아니기 때문에 이에 대한 대답이 없지만 Perl의 chomp ()는 실제로 입력 레코드 구분 기호를 끝에서 제거합니다. 이것은 Unixy에 대한 개행이지만 Windows와 같이 다를 수 있으며 변경 가능합니다. 문자열 끝에서 해당 값을 한 번만 제거하는 방법이 있습니까?
brian d foy

5
brian d foy : Python에는 awk 및 Perl과 같은 입력 레코드 구분 기호가 없습니다.
Peter Hosey

7
@csde_rats, 그건 사실이 아닙니다 : OS X는 \nUnix처럼 개행을 사용 합니다. (OS X 이전에는 MacOS가 \r줄 구분 기호로 사용되었지만 10 년 전에 끝났습니다.)
skue

21
@briandfoy Python은 Universal 개행을 기본적으로 지원합니다 (작성할 때가 아니라 읽을 때만). "U"또는 "rU"모드로 파일을 연 다음 Windows, Linux, Mac에 관계없이 텍스트가 파이썬 코드에 도달 할 때마다 줄 바꿈 스타일이 "\ n"으로 바뀝니다. 참조 : python.org/dev/peps/pep-0278
AlcubierreDrive

12
나는 멍청한 사람이기 때문에 계속해서 철자를 쓸 것입니다. 왜 그것이 작동하지 않는지 궁금해했습니다. .strip()문자열을 변경하지 않습니다 (불변 문자열과 관련이있을 수 있음). 커맨드 라인에 없다면, 당신은 원할 것입니다"string = string.strip()"
Script Kitty


146

줄 끝 (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"

7
최신 Mac OS X 앱은 \ n을 사용합니다. 원래 Mac OS 용으로 작성된 오래된 Carbon 앱만 \ r을 사용합니다.
Peter Hosey

2
설명해 주셔서 감사합니다. 물론 rstrip ( '\ r \ n')도 여전히 작동합니다.
Mike

13
os.linesep현재 OS에 대한 EOL 시퀀스를 포함하는 도 있습니다.
Eli Collins

이것이 가장 좋은 대답입니다. 줄 바꿈 제거하고 가장 일반적인 플랫폼에 적합합니다.
kevinarpe

+1 사용 \n\r
fechnert 2016 년

99

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

$x="a\n";

chomp $x

결과 $x"a".

그러나 파이썬에서는 :

x="a\n"

x.rstrip()

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


7
또한 strip ()은 반복되는 문자를 제거하지만 chop / chomp는 한 줄 바꿈 만 제거합니다
kostmo

50

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

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

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


12
그러나 웹 응용 프로그램에서 사용자가 제출 한 콘텐츠를 정리하려는 경우에는 작동하지 않습니다. 사용자 컨텐츠는 모든 소스에서 올 수 있으며 개행 문자를 포함 할 수 있습니다.
apiguy

2
현대 OS에서 (구식이없는 시스템의) '외국'파일을 처리 할 수 ​​있다는 점을 제외하고는 좋은 지적입니다.
ChuckCottrill

1
텍스트 모드에서 파일을 읽는 경우 후행 문자가 항상 '\ n'으로 변환되므로 Windows 시스템에서도 작동하지 않습니다.
Mad Physicist

@MadPhysicist 당신은 그것을 변환하는 것이 옳지 만, 그것이 논쟁에있는 모든 문자 rstrip('\r\n')와 동일 하고 rstrip()스트립 하기 때문에 여전히 작동합니다 .
dtauxe

41

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


35
s = s.rstrip()

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


33

이것은 "\ n"줄 종결 자에 대해 정확하게 perl의 chomp (배열에서 빼기 동작)를 복제합니다.

def chomp(x):
    if x.endswith("\r\n"): return x[:-2]
    if x.endswith("\n") or x.endswith("\r"): return x[:-1]
    return x

(참고 : 문자열 'in place'는 수정하지 않으며 추가 공백을 제거하지 않으며 \ r \ n을 고려합니다)


27
"line 1\nline 2\r\n...".replace('\n', '').replace('\r', '')
>>> 'line 1line 2...'

또는 항상 정규 표현식으로 괴짜를 얻을 수 있습니다 :)

재미 있어요!


이것은 줄 끝이있는 텍스트 파일을 한 줄의 텍스트로 빠르게 전환하려고 시도하는 데 효과적이었습니다. 나는 초보자이기 때문에 더 좋은 방법이 있는지 확실하지 않지만 잘 작동했습니다. 감사합니다! (스트립은 내부가 아닌 끝에서만 작동하는 것처럼 보였습니다)
Steve Koch

2
.replace('\n|\r', '')? 와 같은 하나의 replace 문을 사용하지 않는 이유는 무엇 입니까?
Doorknob

2
다른 사람이 @DoorknobofSnow의 아이디어를 사용하려는 경우 정규식 모듈을 사용하는 것이 약간 변경됩니다 : import re re.sub('\n|\r', '', '\nx\n\r\n')==> 'x'.
Taylor Edmiston

@TaylorEdmiston이 언급 한대로이 정규식 기술을 사용하는 것이 정답입니다.
Bhargav

@Bhargav 나는 몇 가지 다른 관련 옵션을 탐색하면서 제안한 대로이 의견에 따라이 질문에 대한 답변을 추가했습니다. 또한 정규식이 str.rstrip 보다이 문제에 대한 더 나은 솔루션이라고 생각하는 이유가 무엇인지 설명했습니다. 왜냐하면 대부분의 답변이 사용하기 때문입니다.
Taylor Edmiston

27

스트립을 사용할 수 있습니다 :

line = line.strip()

데모:

>>> "\n\n hello world \n\n".strip()
'hello world'

1
이 솔루션을 시도했지만 라인의 선행 공백을 제거합니다.
Tarik

@Tarik 당신은 rstrip를 사용할 수 있습니다
Hackaholic

rstrip은 최대 하나의 줄 바꿈 만 삭제하는 chomp와 달리 후행 공백을 모두 삭제합니다.
Flimm 2016 년

20

rstrip은 많은 수준에서 chomp와 동일한 기능을 수행하지 않습니다. http://perldoc.perl.org/functions/chomp.html을 읽고 chomp가 실제로 매우 복잡하다는 것을 알 수 있습니다.

그러나 내 주요 요점은 chomp가 최대 1 줄 끝을 제거하는 반면 rstrip은 가능한 한 많은 것을 제거한다는 것입니다.

다음은 모든 줄 바꿈을 제거하는 rstrip을 볼 수 있습니다.

>>> 'foo\n\n'.rstrip(os.linesep)
'foo'

다음과 같이 rel을 사용하여 일반적인 Perl chomp 사용법을 훨씬 더 가깝게 추정 할 수 있습니다.

>>> re.sub(os.linesep + r'\Z','','foo\n\n')
'foo\n'

2
이 중요한 세부 사항을 지적한 사람은 당신뿐입니다. 그러나 위에서 언급 한 것처럼 다른 시스템에서 파일을 읽는 경우 os.linesep를 사용하면 작동하지 않습니다. 파이썬에서는 실제로 줄 끝을 검사하는 데 약간의 작업이 필요할 수 있습니다.
brianmearns

19

주의 사항 "foo".rstrip(os.linesep): 파이썬이 실행되는 플랫폼의 줄 바꿈 문자 만 꽉 채우게됩니다. 예를 들어 Linux에서 Windows 파일의 라인을 침식한다고 상상해보십시오.

$ python
Python 2.7.1 (r271:86832, Mar 18 2011, 09:09:48) 
[GCC 4.5.0 20100604 [gcc-4_5-branch revision 160292]] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os, sys
>>> sys.platform
'linux2'
>>> "foo\r\n".rstrip(os.linesep)
'foo\r'
>>>

"foo".rstrip("\r\n")Mike가 위에서 말한 것처럼 대신 사용하십시오 .


주목해야 할 또 다른 사항은 최대 하나의 줄 바꿈을 제거하지 않지만 모든 개행을 제거한다는 것 chomp입니다.
Flimm 2016 년

19

파이썬 문서예제는 단순히을 사용합니다 line.strip().

Perl의 chomp함수는 실제로 문자열이있는 경우에만 문자열 끝에서 하나의 줄 바꿈 시퀀스를 제거합니다.

process개념적 으로이 파일의 각 줄에 유용한 것을 수행하는 데 필요한 함수 인 경우 Python에서 어떻게 할 계획입니까 ?

import os
sep_pos = -len(os.linesep)
with open("file.txt") as f:
    for line in f:
        if line[sep_pos:] == os.linesep:
            line = line[:sep_pos]
        process(line)

2
마지막으로 한 번만 제거하고 (실제 chomp와 같이) OS 휴대용입니다.
Ciro Santilli 冠状 病毒 审查 六四 事件 法轮功

13

파이썬으로 프로그래밍하지는 않지만 python.org에서 python 2.2 이상에 대해 S.rstrip ( "\ r \ n")을 옹호 하는 FAQ 를 발견했습니다 .


10
import re

r_unwanted = re.compile("[\n\t\r]")
r_unwanted.sub("", your_text)

2
이것은 또한 원래 질문이 요구하지 않는 탭 공백을 제거합니다. (\ t 문자로 인해)
NoahR

9

파일 객체에서 촘촘한 줄을 얻는 방법과 평행하게 반복자를 통해 촘촘한 줄을 얻는 것이 편리하다는 것을 알았습니다. 다음 코드를 사용하면됩니다.

def chomped_lines(it):
    return map(operator.methodcaller('rstrip', '\r\n'), it)

샘플 사용법 :

with open("file.txt") as infile:
    for line in chomped_lines(infile):
        process(line)

참고 :로 operator.methodcallermap( itertools.imap파이썬 레벨 생성기 코드를 피하고 (함으로써하지만 틀림없이 내가 / O 오버 헤드 작은 이익을 마스크 가능성이 조금 더 빠른 실행), 당신은 C 층이 일을 밀어 수 Py2에) for line in map(operator.methodcaller('rstrip', '\r\n'), infile):. 여전히로 간주 될 수 있습니다 def chomped_lines(it): return map(operator.methodcaller('rstrip', '\r\n'), it).
ShadowRanger

8

특수한 경우에 대한 해결 방법 :

개행 문자가 마지막 문자 인 경우 (대부분의 파일 입력의 경우와 마찬가지로) 컬렉션의 모든 요소에 대해 다음과 같이 색인을 생성 할 수 있습니다.

foobar= foobar[:-1]

줄 바꿈 문자를 잘라냅니다.


3
때때로 줄 바꿈이 아닌 마지막 문자, 그러나 다른 사람으로 특별히 윈도우의 마지막 것들, 뾰족한 밖으로있다.
Cacovsky 2016 년

8

질문이 여러 줄 str 객체 (oldstr)에서 모든 줄 바꿈을 정리하는 경우 구분 기호 '\ n'에 따라 목록으로 나누고이 목록을 새 str (newstr)에 결합 할 수 있습니다.

newstr = "".join(oldstr.split('\n'))


7

perl의 chomp에 대한 완벽한 아날로그가없는 것 같습니다 . 특히 rstrip은와 같은 여러 문자 줄 바꿈 구분자를 처리 할 수 ​​없습니다 \r\n. 그러나 분할 선여기에서 지적한대로 입니다. 다른 질문에 대한 내 대답 에 따라 조인분할 선 을 결합 하여 문자열에서 모든 줄 바꿈을 제거 / 교체 할 수 있습니다 s.

''.join(s.splitlines())

다음은 정확히 하나의 후행 줄 바꿈을 제거합니다 (나는 생각하는 것처럼). 분리선에 True대한 keepends인수로 전달 하면 구분 기호가 유지됩니다. 그런 다음 마지막 "줄"에서 구분 기호를 제거하기 위해 분할 선이 다시 호출됩니다.

def chomp(s):
    if len(s):
        lines = s.splitlines(True)
        last = lines.pop()
        return ''.join(lines + last.splitlines())
    else:
        return ''

7

다른 답변의 의견에 앞서 게시 한 답변에서 정규 표현식 기반 답변을 버블 링하고 있습니다. 사용 re하는 것이이 문제에 대한보다 명확한 해결책 이라고 생각 str.rstrip합니다.

>>> import re

하나 이상의 후행 줄 바꿈 문자 를 제거하려면 다음을 수행하십시오 .

>>> re.sub(r'[\n\r]+$', '', '\nx\r\n')
'\nx'

개행 문자를 어디에서나 제거하려면 (후행이 아닌) :

>>> re.sub(r'[\n\r]+', '', '\nx\r\n')
'x'

만 1-2 후행 개행 문자를 제거 할 경우 (즉, \r, \n, \r\n, \n\r, \r\r, \n\n)

>>> re.sub(r'[\n\r]{1,2}$', '', '\nx\r\n\r\n')
'\nx\r'
>>> re.sub(r'[\n\r]{1,2}$', '', '\nx\r\n\r')
'\nx\r'
>>> re.sub(r'[\n\r]{1,2}$', '', '\nx\r\n')
'\nx'

나는 대부분의 사람들이 실제로 여기에서 원하는 느낌을 가지고 있습니다. 후행 줄 바꿈 문자를 번만 제거 \r\n하거나 \n더 이상 아무것도 제거하지 않는 것입니다.

>>> re.sub(r'(?:\r\n|\n)$', '', '\nx\n\n', count=1)
'\nx\n'
>>> re.sub(r'(?:\r\n|\n)$', '', '\nx\r\n\r\n', count=1)
'\nx\r\n'
>>> re.sub(r'(?:\r\n|\n)$', '', '\nx\r\n', count=1)
'\nx'
>>> re.sub(r'(?:\r\n|\n)$', '', '\nx\n', count=1)
'\nx'

( ?:비 캡처 그룹을 만드는 것입니다.)

(그런데이는 없습니다 어떤 '...'.rstrip('\n', '').rstrip('\r', '')이 스레드에 걸림돌.을 명확하지 않을 수 않는 str.rstrip같은 문자열이되도록 스트립을 가능한 한 뒤 문자의 많은으로 foo\n\n\n의 위양성을 초래할 것이다 foo당신이 보존 싶었을 수있는 반면 하나의 후행 줄을 제거한 후 다른 줄 바꿈.)


정규식을 사용하면 최종 접근 방식에서도 캡처하지 않은 그룹을 건너 뛸 수 r'\r?\n$'있습니다. 정규식 엔진은 교체 최적화에 더 많은 시간이 걸리기 때문에 더 효율적일 수 있습니다. 또한 여러 번이 작업을 수행하는 경우 식에 앞서 (특히 다른 re용도 와 혼용하는 경우) 훨씬 빠르며 컴파일 된 정규식 객체 re.compilesub메서드 를 사용하십시오 . 모듈 함수는 파이썬 수준이며 컴파일 된 정규 표현식에 대한 캐시를 먼저 확인한 다음 (없는 경우 작성 / 캐싱) 일치하는 메소드를 호출하십시오. 해당 조회를 건너 뛰면 도움이됩니다.
ShadowRanger

1
또한 참고 사항 : \n직접 일치 시키려고하므로 \Zover 를 사용하고 싶을 수도 있습니다 $(또는 문자열 끝에서 개행 직전에 암시 적으로 일치 할 수 \r?$있기 때문에 $match).
ShadowRanger

5
>>> '   spacious   '.rstrip()
'   spacious'
>>> "AABAA".rstrip("A")
  'AAB'
>>> "ABBA".rstrip("AB") # both AB and BA are stripped
   ''
>>> "ABCABBA".rstrip("AB")
   'ABC'

내가 필요한 예! 따라서 rstrip ( "\ r \ n")은 줄 끝에서 '\ n'과 '\ r'을 조합하여 제거합니다!
아고스티노

제공 @Agostino 없음 필요 "\r\n"예를 들어이 : ' spacious \n\r\n\r \n\n'.rstrip()생산' spacious'
olibre

2
@olibre 당신이 제안하는 코드는 다른 공백 / 공백 문자를 제거 할 것이고, 이것이 필요하지 않을 수도 있습니다. 사실, 나는 eol 문자의 조합 만 제거하면됩니다. 그래도 이것을 지적 해 주셔서 감사합니다.
Agostino

4

그냥 사용하십시오 :

line = line.rstrip("\n")

또는

line = line.strip("\n")

이 복잡한 물건이 필요하지 않습니다


2
이것은 chomp와 동일하지 않습니다.
Flimm

4
s = '''Hello  World \t\n\r\tHi There'''
# import the module string   
import string
# use the method translate to convert 
s.translate({ord(c): None for c in string.whitespace}
>>'HelloWorldHiThere'

정규식으로

s = '''  Hello  World 
\t\n\r\tHi '''
print(re.sub(r"\s+", "", s), sep='')  # \s matches all white spaces
>HelloWorldHi

교체 \ n, \ t, \ r

s.replace('\n', '').replace('\t','').replace('\r','')
>'  Hello  World Hi '

정규식으로

s = '''Hello  World \t\n\r\tHi There'''
regex = re.compile(r'[\n\r\t]')
regex.sub("", s)
>'Hello  World Hi There'

가입

s = '''Hello  World \t\n\r\tHi There'''
' '.join(s.split())
>'Hello  World Hi There'

3

일반적으로 발생하는 세 가지 유형의 줄 끝이 있습니다. \n,\r\r\n. 의 간단한 정규 표현식 re.sub, 즉r"\r?\n?$" , 그들 모두를 잡을 수있다.

(그리고 우리 모두를 잡아야 해요 , 맞습니까?)

import re

re.sub(r"\r?\n?$", "", the_text, 1)

마지막 논증으로, 우리는 발생 빈도를 1로 대체하여 chomp를 어느 정도 흉내냅니다. 예:

import re

text_1 = "hellothere\n\n\n"
text_2 = "hellothere\n\n\r"
text_3 = "hellothere\n\n\r\n"

a = re.sub(r"\r?\n?$", "", text_1, 1)
b = re.sub(r"\r?\n?$", "", text_2, 1)
c = re.sub(r"\r?\n?$", "", text_3, 1)

...는 어디에 a == b == c있습니다 True.


본격적인 정규 표현식조차 필요하지 않습니다. rstrip("\r\n")포괄입니다. 시도하십시오 print(text_2.rstrip('\r\n')).
아고스티노

@Agostino : str.rstrip()문제 가 해결되면 사실 입니다. 어떤 요구 사항에 따라 다릅니다. 이 솔루션은 특히 방금 마지막을 제거해야 할 때 경우에한다 "\n", "\r"또는 "\r\n"전부는 아니지만 그들 (복수가있는 경우 "\n"문자열). 다른 문자열을 re.sub(r"\r?\n?$", "", text_1, 1)반환 "hellothere\n\n"하고 text_1.rstrip("\r\n")반환 "hellothere"합니다.
internetional

내가 말하려는 것은 그것이 str.strip()전부입니다. 때로는 매우 문제입니다.
internetional

1

속도에 관심이 있고 (예를 들어, 문자열 목록이 충분하지 않음) 줄 바꿈 문자의 특성을 알고 있으면 문자열 슬라이싱이 실제로 rstrip보다 빠릅니다. 이것을 설명하기위한 약간의 테스트 :

import time

loops = 50000000

def method1(loops=loops):
    test_string = 'num\n'
    t0 = time.time()
    for num in xrange(loops):
        out_sting = test_string[:-1]
    t1 = time.time()
    print('Method 1: ' + str(t1 - t0))

def method2(loops=loops):
    test_string = 'num\n'
    t0 = time.time()
    for num in xrange(loops):
        out_sting = test_string.rstrip()
    t1 = time.time()
    print('Method 2: ' + str(t1 - t0))

method1()
method2()

산출:

Method 1: 3.92700004578
Method 2: 6.73000001907

함수 내에서 "전역 루프"를 사용해야 할 수도 있지만 이것이 잘 작동합니다.
Stephen Miller

이 테스트는 .. 잘못이 아니라 공정한에서 method1방금 마지막 문자, 무엇에 상관없이 잘라낸하는 는 먼저, 만약 문자열의 끝이 원하지 않는 문자가 포함 된 일부가 발견 된 경우에만 그들을 갈비를. 문자를 확인 하고 agin을 테스트하십시오! method2.rstrip()method1
spky

대답 소개에서 말했듯이 줄 바꿈 문자의 특성을 알고 있다면 유용합니다. 그렇지 않다면 분명히 일종의 문자 검사를 구현하거나 rstrip을 사용해야합니다. 나는 rstrip하기 위해 "불공평하다"는 말이 아니라, 어떤 상황에서는 고려할 가치가없는 중요하지 않은 차이를 간단히 설명했다.
Stephen Miller

1

이것은 Windows와 Linux 모두에서 작동합니다 (re 해결책 만 찾고 있다면 re sub로 조금 비쌉니다)

import re 
if re.search("(\\r|)\\n$", line):
    line = re.sub("(\\r|)\\n$", "", line)


3
re.search필요한 곳에 사용 re.sub합니까?
wjandrea

0

먼저 분할 선을 원하는 구분 기호로 연결하십시오.

x = ' '.join(x.splitlines())

매력처럼 작동합니다.


-1

모두 잡아라 :

line = line.rstrip('\r|\n')

5
rstrip정규 표현식을 사용하지 않습니다. "hi|||\n\n".rstrip("\r|\n")반환"hi"
Flimm
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.