2009-02-03 5 views
3

이 작업은 모든 플랫폼에서 가능합니까? 나는 Windows가 \ r \ n을 알고, 리눅스가 듣는 동안 맥이 듣는 것을 기억한다. \ n. Windows에서이 코드를 실행하여 문제가없는 것처럼 보였으 나 크로스 플랫폼인지 알 수 있습니까? 우선파이썬 독서 라인 승/O를 n?

while 1: 
    line = f.readline() 
    if line == "": 
     break 
    line = line[:-1] 
    print "\"" + line + "\"" 
+1

OS X은 \ n - "클래식"이었던 것은 가증스러운 작업이었습니다. –

+0

줄 끝 (유니 코드 포함)은 \ n 자동으로 번역됩니다. –

+0

-1 : 만료 된 MacOS 정보. –

답변

13

universal newline support

둘째가 : 단지 line.strip()를 사용합니다. 줄의 처음이나 끝에있는 공백을 유지하려면 line.rstrip('\r\n')을 사용하십시오.

print '"%s"' % line 

또는

print '"' + line + '"' 

적어도

아, 그리고

는 조금 더 좋은 보일 수 있습니다.

당신은 (이 코드와 같은 파일의 중간에 빈 라인에 중단되지 않습니다)이 같은 파일의 라인을 통해 반복 할 수

for line in f: 
    print '"' + line.strip('\r\n') + '"' 

사용자의 입력 파일은 충분히 짧다면, 당신을 str.splitlines 기본적으로 라인 엔딩을 버린다는 사실을 사용할 수 있습니다

with open('input.txt', 'rU') as f: 
    for line in f.read().splitlines(): 
     print '"%s"' % line 
+1

이렇게하면 끝나는 라인뿐만 아니라 모든 선행 및 후행 공백을 제거합니다. –

+0

+1 : 범용 개행에 대해 open (파일, "rU"). –

+0

은 간결하고 완전합니다. – chryss

4

대신이 시도 :

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

라인 = 라인 [- 1] 파일의 마지막 행이 있다면

라인은 후행 개행이 없다.

위에서 제안한 것처럼 rstrip()을 사용하여 보편적 인 개행을 시도하십시오.