파이썬 : 줄이 빈 줄인지 확인하는 방법


87

줄이 비어 있는지 확인하기 위해 if 사이클을 작성하는 방법을 알아 내려고합니다.

파일에는 많은 문자열이 있으며이 중 하나는 다른 문과 구분하기위한 빈 줄입니다 "".

new statement
asdasdasd
asdasdasdasd

new statement
asdasdasdasd
asdasdasdasd

파일 입력 모듈을 사용하고 있으므로 행이 비어 있는지 확인하는 방법이 있습니까?

이 코드를 사용하면 작동하는 것 같습니다. 감사합니다!

for line in x:

    if line == '\n':
        print "found an end of line"

x.close()

답변:


132

공백 만있는 줄을 무시하려면 :

if not line.strip():
    ... do something

빈 문자열은 False 값입니다.

또는 정말로 빈 줄만 원하는 경우 :

if line in ['\n', '\r\n']:
    ... do  something

두 번째는 내가 생각했던 것을 수행합니다. 감사합니다! [ '\ n'] 줄의 경우 :
user1006198

1
만 사용하는 경우 if line in ['\n'], 당신은 함께 그를 교체해야합니다 if line == '\n'.
Andrew Clark

8
나는 받아 들여진 대답에 오류가 있음을 지적하고 싶습니다. if line.strip () : ... #do something은 공백이있는 줄을 무시합니다. 그렇기 때문에 두 번째 포스터 만 원본 포스터에 적용되었습니다. 'not'은 제거해야합니다.
niefpaarschoenen

4
그렇지 않다면 line.strip () : ... 무언가를하십시오. 대신 계속해야하지 않습니까? line.strip ()이 아니라면 실제로는 라인이 비어있어서 아무것도 제거 할 수 없으므로 무시하거나 계속합니다. 첫 번째 부분하지 line.strip () 모든 빈 줄을 잡는다
Dhiwakar Ravikumar에게

1
os.linesep대신 사용하는 것이 더 깨끗 ['\n', '\r\n']합니까?
Shawn

26

다음 코드를 사용하여 공백이 있거나없는 빈 줄을 테스트합니다.

if len(line.strip()) == 0 :
    # do something with empty line

11
line.strip() == ''

또는 공백으로 구성된 줄을 "먹고"싶지 않은 경우 :

line in ('\n', '\r\n')

1
두 번째 샘플 \r\n에서 Windows 스타일의 줄 끝 (CRLF) 을 확인하고 싶을 것입니다
poplitea

이것이 Unix 시스템에서 실행되고 있다는 것을 언급하는 것을 잊었으므로 \ r없이 개행 문자를 사용합니다. 시도해 보았지만 작동하지 않았습니다. 저에게 효과가있는 것 : if line in [ '\ n'] : (라인 == "\ n"이 작동하지 않는 이유를 알 수 없음)
user1006198

1
@ user1006198 : 만 확인하는 \n경우 line == '\n'더 좋습니다. 다시 시도하고 문제가 무엇인지 파악해야합니다.
2010 년

@ user1006198 : (1) Windows에서 만든 텍스트 파일을 Unix에서 읽으면 \r\n사용하지 않는 경우 얻을 수 있습니다. mode='rU'(2) 단서 얻기 : print repr(line)단서를 제공하지 않는 경우 "작동하지 않는 항목"을 정확히 알려주십시오. 당신에게 의미합니다.
John Machin

내가 가진 유일한 설명은 아마도 파일 입력이 각 줄에 대해 뭔가를한다는 것입니다. , 그리고 ==를 사용하면 "if line in"을 사용할 때 수행하는 동안 디버그 행을 인쇄하지 않습니다.)
user1006198


1

정규식을 사용하는 것이 더 강력하다고 생각합니다.

import re

for i, line in enumerate(content):
    print line if not (re.match('\r?\n', line)) else pass

이것은 Windows / unix에서 일치합니다. 또한 공백 문자 만 포함하는 줄에 대해 확실하지 않은 경우 '\s*\r?\n'표현식으로 사용할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.