2010-07-27 2 views
15

하위 프로세스 모듈의 통신 방법에서 일부 데이터를 읽습니다. "\ r \ n"으로 구분 된 큰 문자열로 들어옵니다. 이것을 라인 목록으로 나누고 싶습니다. 어떻게 파이썬에서 수행됩니까?" r n"으로 구분 된 문자열을 행 목록으로 분할합니까?

+1

당신 사항 String.split()'에 읽을 때 '당신은 무엇을 발견 했는가? 너 뭐 해봤 니? 어떤 자습서를 사용하고 있습니까? –

답변

33

문자열에 splitlines 메서드를 사용하십시오. 워드 프로세서

:

str.splitlines ([keepends]) 반환 라인 경계에서 줄 바꿈 문자열의 라인의 목록입니다. keepends가 이고 true 인 경우를 제외하고는 줄 바꿈이 결과 목록에 포함되지 않습니다.

이렇게하면 OS에 관계없이 줄 끝이 "\ r \ n", "\ r"또는 "\ n"여부에 관계없이 올바른 작업을 수행 할 수 있습니다.

NB "\ n \ r"의 줄 끝 또한 나뉘지만 "\ n"을 유효한 줄 끝으로 간주하고 "\ r"을 끝으로 간주하므로 각 줄 사이에 빈 문자열이 표시됩니다 다음 줄의. 예 :

>>> "foo\n\rbar".splitlines() 
['foo', '', 'bar'] 
+0

"foo \ r \ nbar".splitlines()는 [ 'foo', 'bar']를 반환합니다. CRLF/CR/LF는 모두 인식되지만 LFCR은 2 줄로 표시됩니다. –

1
s = re.split(r"[~\r\n]+", string_to_split) 

이것은 당신의 문자열의 목록을 제공합니다.

+1

''a \ n \ nb ''를 3 개의 문자열 (''a'','' '''b'')로 나누어야한다고 생각하면 실패합니다. –

+0

사실, 빈 줄은 무시됩니다. – tkerwin

관련 문제