2013-05-06 3 views
4

파일이 있는데 파일을 열면 일부 단락이 인쇄됩니다. 이 단락을 하나의 큰 본문을 형성하기위한 공간과 함께 참여시켜야합니다.파이썬의 텍스트 파일에 모든 라인을 함께 결합하는 방법은 무엇입니까?

내가 그렇게 같은 공백으로 줄 바꿈을 대체하려고했습니다

Hello my name is blah. What is your name? Hello your name is blah. What is my name? 

이? : 같은

Hello my name is blah. What is your name? 
Hello your name is blah. What is my name? 

어떻게 출력이 될 수 있습니다 :
for data in open('file.txt'): 
    print data 

이 같은 출력이

for data in open('file.txt'): 
     updatedData = data.replace('\n',' ') 

하지만 빈 라인이 단락

에 가입하고도과 같이 가입 시도하지 않습니다

for data in open('file.txt'): 
    joinedData = " ".join(data) 

을하지만 두 단락 형식 치우는없는 동안 즉, 공백으로 각 문자를 구분합니다.

답변

9

당신은 str.join을 사용할 수

with open('file.txt') as f: 
    print " ".join(line.strip() for line in f) 

line.strip()이 라인의 양쪽 끝에서 공백의 모든 유형을 제거합니다. line.rstrip("\n")을 사용하면 후행 "\n" 만 제거 할 수 있습니다.

file.txt가 포함되어있는 경우 :

Hello my name is blah. What is your name? 
Hello your name is blah. What is my name? 

그런 다음 출력은 다음과 같습니다

Hello my name is blah. What is your name? Hello your name is blah. What is my name? 
+0

감사합니다. – user2353608

4

을 당신은 각각의 라인을 통해 루핑하고 줄 바꿈을 추가하는 print 문입니다.

후행 쉼표와
for data in open('file.txt'): 
    print data.rstrip('\n'), 

, print가 줄 바꿈을 추가하지 않으며, .rstrip() 호출 단지 라인에서 후행 줄 바꿈을 제거합니다 일 것이다 다음과 같습니다.

또는 각 줄 자체가 아닌 모든 읽기 및 줄 바꿈을 ' '.join()으로 전달해야합니다. 파이썬의 문자열은 ~까지 이어 지므로 줄에 포함 된 문자열은 자신에게 전달 될 때 별도의 문자로 해석되어 ' '.join()이됩니다.

다음 코드는 두 가지 새로운 트릭을 사용합니다. 컨텍스트 관리자 및 지능형리스트 :

with open('file.txt') as inputfile: 
    print ' '.join([line.rstrip('\n') for line in inputfile]) 

with 문은 우리가 with 문 아래에 들여 쓰기 블록으로 완료되면 파일이 자동으로 종료됩니다 의미 상황에 맞는 관리자로 파일 개체를 사용합니다.[.. for .. in ..] 구문은 inputfile 개체에서 목록을 생성합니다. 여기서 각 줄은 끝에 줄 바꿈이없는 버전으로 바뀝니다.

+2

가장 좋은 대답은, 특히 메모리에 전체 파일을 저장하지 않는 첫 번째 답변입니다. – jamylak

1
data = open('file.txt').read().replace('\n', '') 
관련 문제