2017-11-19 6 views
-3

다음과 같은 줄이있는 텍스트 파일이 있습니다 : text1:numbers:text2. 이러한 파일을 어떻게 분리하여 다른 파일에 text1:text2:numbers을 출력 할 수 있습니까?줄의 텍스트 순서를 전환하는 방법?

file1=open("textfile.txt","r") 

file2=open("textfile2.txt","w") 

while True: 

    line=file1.readline() 

    a=line.split(":") 

    if line=="":break 
+4

참으로. 너 뭐 해봤 니? –

+0

지금까지 시도한 것은 무엇입니까? 코드를 게시하십시오. – James

+0

"text1"및 "text2"의 예는 무엇입니까? – realharry

답변

0

각 텍스트 부분을 split의 변수에 할당 한 다음 별도의 순서로 쓸 수 있습니다. 나는 또한 파일을 열 컨텍스트 관리자를 사용하고, 파일 객체 않고 직접 readline 아무것도 반환 될 때까지 무한 루프 반복하고있어

with open("textfile.txt") as f1, open("textfile2.txt", "w") as f2: 
    for line in f1: 
     text1, numbers, text2 = line.split(":") 
     # N.B. this will fail if there are more *or* less than 3 parts to line.split(":") 
     # on any line of the file. Ensure that there is not, or wrap this in a 
     # try/except block and handle appropriately. 

     f2.write("{}:{}:{}\n".format(text1, text2, numbers)) 
     # or f2.write(':'.join([text1, text2, numbers, "\n"])) 
     # or f2.write(text1 + ":" + text2 + ":" + numbers + "\n") 
     # or any other way to assemble the text you want. 

     # my favorite in Py3.6+ is an f-string 
     # f2.write(f"{text1}:{text2}:{numbers}\n") 

참고. 명시적인 openclose 문을 통해 컨텍스트 관리자를 선호해야합니다. 이는 해당 종료가 깨끗하지 않더라도 (예외 처리 및 처리 된 경우 등) 블록에서 종료 한 후에 파일 개체를 닫을 수 있기 때문입니다. 무한 루프에서 한 번에 한 줄씩 읽는 대신 파일 객체를 반복하는 것은 관용적으로 더 멋지게 보입니다.