2012-01-11 3 views
0

python 파일의 모든 문자열 시작 부분에있는 공백을 제거하는 방법은 무엇입니까?파이썬의 파일에서 모든 문자열의 시작 부분에있는 공백을 제거 하시겠습니까?

_ _ Amazon.inc 
Arab emirates 
_ Zynga 
Anglo-Indian 

그 밑줄에 공백이 있습니다

나는 거기에 아래 그림과 같이 문자열을 가진 파일 myfile.txt 있습니다.

코드는 줄의 처음 부분에있는 파일의 각 줄과 모든 공백을 제거해야하는 방식이어야합니다.

lstrip을 사용해 보았지만 여러 줄에서 작동하지 않으며 readlines()도 있습니다.

for 루프를 사용하면 더 나아질 수 있습니까?

inf = open("infile.txt") 
stripped_lines = [l.lstrip() for l in inf.readlines()] 
inf.close() 

# write the new, stripped lines to a file 
outf = open("output.txt", "w") 
outf.write("".join(stripped_lines)) 
outf.close() 
+2

필자는'lstrip()'을 사용하여 제안하려고했으나 이미 시도해 보였습니다. 지금 작성한 코드를 게시하여 다시 쓸 필요없이 제안 할 수 있습니까? –

+0

upvote하고 받아 들여진대로 가장 유용한 답변을 기억하십시오. –

답변

2

사용자의 입력 데이터가 infile.txt에 있다고 가정하면, 당신은 OUTPUT.TXT이 파일을 작성하려면, 그것은이 list comprehension 사용하는 것이 가장 쉬운 방법입니다 파일의 행을 하나씩 삭제하고 각 행의 선행 공백을 제거하십시오. 그 후, 다시 라인을 가입 할 수 있습니다 당신은 공백없이 원본 텍스트 다시 얻을 것이다 :

with open('myfile.txt') as f: 
    line_lst = [line.lstrip() for line in f.readlines()] 
    lines = ''.join(line_lst) 

print lines 
2

당신이해야 할 모든이를 읽기 :

+0

@MartinGeisler 편집 해 주셔서 감사합니다. – jcollado

1

myfile.txt에서 라인을 읽고 output.txt에 기록하기를,

with open("myfile.txt") as input: 
    with open("output.txt", "w") as output: 
     for line in input: 
      output.write(line.lstrip()) 

를 사용하는 것이 파일을 다 읽은 후에 파일을 닫아야하며, 한 번에 한 줄만 메모리에 유지해야합니다.

위의 코드는 with 키워드로 인해 Python 2.5 이상에서 작동합니다. 이 파일이 마지막에 자동으로 종료됩니다 단지 작은 스크립트의 경우 파이썬 2.4를 들어 당신은

input = open("myfile.txt") 
output = open("output.txt", "w") 
for line in input: 
    output.write(line.lstrip()) 

를 사용할 수 있습니다. 이 큰 프로그램의 일부인 경우, 당신은 명시 적으로 다음과 같은 파일을 닫아야 할 것 :

input = open("myfile.txt") 
try: 
    output = open("output.txt", "w") 
    try: 
     for line in input: 
      output.write(line.lstrip()) 
    finally: 
     output.close() 
finally: 
    input.close() 

당신은 이미 lstrip으로 시도하고 여러 줄 작동하지 않았다고 말한다. "트릭"은 위의 각 줄마다 lstrip을 실행하는 것입니다. 원하는 경우 online 코드를 사용해 볼 수 있습니다.

+0

흠! 구문 오류는 –

+0

을 보여줍니다. with 키워드가없는 Python 2.4를 사용해야합니다. 내가 다시 쓸거야. –