2015-01-14 2 views
-1

두 항목으로 된 여러 항목이있는 텍스트 파일을 읽습니다. 머리글과 본문. 메모장 ++에서 입력 파일을 열면 각 줄의 끝 부분에 CR과 LF가 표시됩니다. 스크립트를 통해이 파일을 실행하면 Python에서 문자열 스트립 핑 함수에 의해 제거되지 않습니다.Python : 파일의 공백이 제거되지 않습니다.

아래 코드는 사용하고 있습니다. 여기에서 문제를 해결하기위한 시도에서 나는 유니 코드로 변환 된 라인을 조인하고 일반 lstrip() 및 rstrip()의 애플리케이션 외에도 '\ n'을 제거했습니다. , 과잉 공격은 끝났지 만 라인 엔딩은 수정되지 않은 상태로 남아 있습니다. outfile로 인쇄하고 Notepad ++에서 열면 각 줄의 끝에서 CR과 LF를 볼 수 있습니다. 요청에 따라

with open (f, 'r') as data: 
      for line in data: 
       if 'WORD' in line: 
        f_out.write('\n' + line) ##by adding the return it now prints as needed. 
       else: 
        line = line.strip() 
        f_out.write(line) 

는 입력은 기본적으로 다음과 같습니다

entry title1 path=[742:0-740] CR LF 
LINE1 CR LF 
LINE2 CR LF 
entry title2 path=[742:0-740] CR LF 
LINE1 CR LF 
LINE2 CR LF 
entry title3 path=[742:0-740] CR LF 
LINE1 CR LF 
LINE2 CR LF 
+0

u는 UR 이후 – Hackaholic

+0

사면에서 파일을 업데이트 할 수 있습니다에서 CR의 LF를 제거 wanto 것을, 당신의 설명에서 뭐가? 네가 무엇을 요구하는지 모르겠다. – user3814464

+0

ur 입력 파일의 모양은 다음과 같습니다 : – Hackaholic

답변

1

먼저, next이 (그냥 전화하지, 내장 함수를 명명)를 더 조합 없습니다 있습니다. 아마 continue을 의미할까요? 어쨌든 여기 무고한.

다음으로 귀하의 line = 오른쪽이 그로테스크 한 방식으로 아름답습니다. 단지

line = line.strip() 

은 동등하고 훨씬 더 읽기 쉽습니다.

마지막으로 print은 줄 끝 자체를 추가합니다. 당신이 너무 파이썬 2.7에서 그 개선을 가질 수있다 "미래에서 가져 오기"-

from __future__ import print_function 

는 (항상 가지고 있어야로, 함수로 print 작업을하고, 지금은 파이썬 3에서와

하는 것이 최선이다 위와 같이 -!), 다음

print('>>>', line, end='') 

end='' 부분은 print 나중에 더 라인 끝을 추가하지 보장 (당신은 너무 구식 "성명과 같은 인쇄"와 그 효과,하지만 기능 종류의 작품을 얻을 수 있습니다 훨씬 낫다).

+0

라인을 건너 뛸 때 '다음'을 사용하는 것이 적절하다고 생각했습니다. 다른 점에 관해서는 ... 요점은 공백을 없애고 다음 줄에 합치는 방법을 여러 가지 방법으로 요구하더라도 (지정된 단어가 없다고 가정하면) 일어나지 않아. 각 줄 앞에 '>>>>'를 인쇄하지 말고 함께 묶어야합니다.공백이 제거되지 않고 출력이 출력되는 것을 파일에 인쇄하여 확인했습니다. – user3814464

+0

@user3814464 "다시 한 번 감정이 있습니다.":'print'는 명시 적으로'>>>'를 추가하고 암묵적으로 줄 끝을 추가하는 것입니다. std.sysout.write (line)'을 표준 출력으로 그냥 넘기고 싶다면 그것을 벗긴 후에 그냥'std.sysout.write (line)'을 써라. (당연히 모듈 상단에'import sys '가 필요하다.) –

+0

다음 입력까지 계속되어야 할 때 공백이 텍스트 본문에 있다는 사실만큼 신경 쓰는 인쇄 문이 아닙니다. 주위를 어지럽히고 나면, 내가 가지고있는 '일하는'것과 가장 가까운 것 ... 그리고 내 목적을 위해 작동 할 것입니다 ... 게시물에 표시된 코드를 수정하는 것입니다. – user3814464

0

난 당신이 모든 라인

with open('file') as f, open('outfile', 'w') as f2: 
    for x in f: 
     x = x.strip() 
     f2.write(x + '\n') 
+0

그는 'CR LF'가 아닌'\ r \ n (캐리지 리턴, 줄 바꿈)을 의미합니다. –

+0

* She *; P ... 우리는 "ze"로 성 중립적으로 갈 수 있지만. – user3814464

관련 문제