2013-06-24 3 views
4

문자열이 있습니다. 문자열에 여러 줄 바꿈 문자가 있습니다. 이 문자열을 포함하는 CSV를 생성하여 Excel로 가져올 수 있습니다. 그러나이 때문에 나는 모든 새로운 줄을 캐리지 리턴으로 변환하고 텍스트를 따옴표로 묶어야한다고 믿습니다.문자열을 Excel 친숙한 형식으로 변환

그러나 내가 추적 결과를 얻을 적은 양의 텍스트로 변환 할 때 : 내가 뭘

>>> xyz = abc.replace('\n','\r') 
>>> xyz 
'\rA\rB\rC\rD\rE\rF\rG\r\r' 
>>> print xyz 
G 

어떤 아이디어를

>>> abc = "\nA\nB\nC\nD\nE\nF\nG\n\n" 
>>> print abc 

A 
B 
C 
D 
E 
F 
G 

전을 잘못된 ?

답변

3

해당 문자열을 파일에 쓰고 텍스트 편집기에서 봅니다.

콘솔에서 캐리지 리턴을 "줄의 시작으로 돌아 가기"로 해석하므로 A가 인쇄 된 다음 B는 F가있는 곳에서 G가 인쇄 될 때까지 A가 있던 곳을 인쇄합니다.

4

the Python csv module을 사용하십시오. 이미 수행 방법을 알고 있습니다.

import csv 
with open('xyz.csv', 'wb') as outfile: 
    w = csv.writer(outfile) 
    w.writerow(['a\nb\nc']) 

이를 실행 한 후, 출력 검사 할 수 있습니다 (GNU 고양이에 -A는 인쇄 할 수없는 문자의 표현이다) :

$ cat -A xyz.csv 
"a$ 
b$ 
c"^M$ 

참고도 이유를 cat -A을 사용할 수 있습니다 이전 구현은 잘못된 것을 수행하는 것처럼 보였습니다.

+0

감사합니다, 나는 아직도 (?) – felix001

+0

felix001 @ 별도의 세포로 모든 텍스트 배치를 CSV 만들기 위해 위의 코드를 사용할 때이 작동합니다. 당신은 아마 그것을 신중하게 충분히 따라 다니지 않을 것입니다. 'writerow' 메쏘드는 시퀀스를 받아 들여서 별도의 셀로 나눕니다. 여기서 Charles는 하나의 요소 만있는 시퀀스를 제공하고, 한 요소는 삽입 된 개행을 포함하는 문자열입니다. 만약 그가 직접 문자열을 전달했다면 (리스트가 아님), 문자열 자체는 셀로 나뉘는 연속열이 될 것입니다 (각각 하나의 문자를 포함하고 있습니다). –

관련 문제