2010-01-23 5 views
10

여기 내 머리카락을 당겨서 ... 지난 1 시간 동안 이것으로 놀았지만, 내가 원하는 것을 할 수는 없습니다. 즉. 개행 시퀀스를 제거하십시오.rstrip이 개행 문자를 제거하지 않습니다. 내가 뭘 잘못하고 있니?

def add_quotes(fpath): 

     ifile = open(fpath, 'r') 
     ofile = open('ofile.txt', 'w') 

     for line in ifile: 
      if line == '\n': 
       ofile.write("\n\n") 
      elif len(line) > 1: 
       line.rstrip('\n') 
       convertedline = "\"" + line + "\", " 
       ofile.write(convertedline) 

     ifile.close() 
     ofile.close() 

답변

17

단서 rstrip의 서명입니다.

그것은 문자열의 복사본을 반환하지만 원하는 문자를 제거하여, 따라서 당신이 line에게 새 값을 지정해야합니다

:

line = line.rstrip('\n') 

이 작업의 때로는 매우 편리 체인 허용을 :

"a string".strip().upper() 

Max. S은 주석에서 파이썬 문자열은 "변경 가능"연산이 변경된 복사본을 생성한다는 것을 의미하는 불변입니다.

이것은 많은 프레임 워크와 언어에서 작동하는 방식입니다. (보통 성능상의 이유로) 가변 문자열 유형이 필요하면 문자열 버퍼 클래스가 있습니다.

stripped_line = line.rstrip() 

다음 stripped_line을 쓰기 :

+6

더 일반적으로 파이썬의 문자열은 변경 불가능합니다. 일단 생성되면 변경할 수 없습니다. 문자열에 무언가를 수행하는 함수는 사본을 반환합니다. –

+0

사실. 어쩌면 그 대답에 넣어야합니다. – Skurmedel

+0

고마워, 나는 새로운 무엇인가 간단해야만했다. ... 파이썬 문서를 보지 않고서는 내 자신의 잘못이다. – volting

3

당신이 Skurmedel의 대답과 코멘트에 언급 된 바와 같이이

def add_quotes(fpath): 
     ifile = open(fpath, 'r') 
     ofile = open('ofile.txt', 'w') 
     for line in ifile: 
      line=line.rstrip() 
      convertedline = '"' + line + '", ' 
      ofile.write(convertedline + "\n") 
     ifile.close() 
     ofile.close() 
2

같이 할 수있는, 당신은 같은 것을 할 필요가있다.

관련 문제