2012-07-28 3 views
1

아래 코드를 사용하여 올바른 정보를 파일에 제공하고 있습니다. 여기 코드는 다음과 같습니다파이썬에서 공간 구분 파일 만들기

filename = raw_input('What would you like to name the file? ') 

import csv 

data = [frames] 
out = csv.writer(open(filename,"w"), delimiter=' ',quoting=csv.QUOTE_MINIMAL) 
out.writerows(data) 

이 텍스트 파일에 다음과 같습니다 뭔가 생성 :이처럼 보이도록 정보를 원하는

"[255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
    0 0]" "[ 0 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171 171 
171 171]" 

:

255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 []0 255 255 255 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

2 개의 브래킷 새로운 정보 행을 나타내는 문자를 나타냅니다. 그것은 내 텍스트 편집기에 약간의 사각형과 나는 그 캐릭터가 무엇인지 확신 할 수 없다.

그렇다면 따옴표와 대괄호를 제거하고 다른 문자를 사용하려면 어떻게해야합니까?

편집 :

Traceback (most recent call last): 
    File "(stdin)", line 1, in (module) 
    File "backandforth3.py", line 154, in (module) 
    out.write(' '.join(frame)) 
Type Error: sequence item 0: expect string, numpy.int32 found 
+0

죄송합니다. 나는 그것들을 업데이트 할 것이다. –

답변

4

난 당신이 메모장을 텍스트 편집기로 사용하고 있으리라 믿고있어 : 나는 아래의 코드를 사용하여 시도하고 다음과 같은 오류가 발생했습니다

? Unix 스타일의 개행 문자 (\n)는 Windows의 개행 문자 (\r\n) 만 지원하기 때문에 메모장에 상자로 표시됩니다. 즉,이 당신이 기대하고있는 출력을 제공해야했다 :

filename = raw_input('What would you like to name the file? ') 

with open(filename, 'wb') as out: 
    for frame in frames: 
     out.write(' '.join(str(num) for num in frame)) 
     out.write('\r\n') 

다른 목록에 frames을 포장 할 이유가 없다; 변수가 숫자 목록의 목록이라고 가정하면 예상되는 출력이 나타내는 것처럼 정상적으로 작동합니다.

출력에 설명 된 "상자"가 반드시 필요한 경우 '\r\n''\n'으로 바꿉니다.

+0

나는 OP가'csv'로 이것을 할 것이라고 생각할 수 있다고 생각합니다. –

+0

@JoelCornett, 그의 입력은'csv' 모듈이 지나치게 과장되어있는 것처럼 보입니다. 구분 기호가 공백이나 줄 바꿈 일 경우 숫자를 이스케이프 할 필요가 없습니다. – Fraxtil

+0

그 코드를 시도했는데 오류가 발생했습니다. 위의 편집을 참조하십시오. –

0

frames 당신이 numpy.savetxt() 기능을 사용할 수보다 NumPy와 배열 인 경우 :

numpy.savetxt(filename, frames) 

csv 코드 라인의 손상 끝을 방지하기 위해 바이너리 모드 wb에서 파일을 엽니 다 해결하려면 및에서 frames을 포장하지 않는이 또 다른 목록은 이미 2D 배열 인 것 같습니다 :

import csv 

with open(filename,"wb") as f: 
    writer = csv.writer(f, delimiter=' ', quoting=csv.QUOTE_MINIMAL) 
    writer.writerows(frames)