2012-09-04 2 views
0

안녕하세요 저는 웹에서 스크립트 praser 텍스트를 작성하고 내 otput 파일은 CRLF, LF 라인 종결자를 사용하는 ISO가 아닌 ASCII 텍스트로되어 있어야합니다. 어떻게 파일을이 파일로 쓸 수 있습니까? 코드 페이지?Python latin2에서 Non-ISO 확장 ASCII 텍스트

def save_file(potoczek, nazwapliku): 
    file = open(nazwapliku,"w") 
    file.write(potoczek) 
    file.close() 
     return() 
#... 
t1='"'+tab[0]+'\"\n'+naglowek+wykli(zawartosc0).encode('latin2') 
t2='"'+tab[1]+'\"\n'+naglowek+wykli(zawartosc1).encode('latin2') 
t3='"'+tab[2]+'\"\n'+naglowek+wykli(zawartosc2).encode('latin2') 
t4='"'+tab[3]+'\"\n'+naglowek+wykli(zawartosc3).encode('latin2') 

TRAKTOR = t1+t2+t3+t4 

print udata 
save_file(TRAKTOR,PLIK_SCIEZKA) 
+0

"ISO가 아닌 확장 ASCII"는 실제로 특정 인코딩을 지정하지 않습니다. 무슨 소리 야? "latin2"는 [ISO-8859-2] (http://en.wikipedia.org/wiki/ISO_8859-2)의 별칭이므로 "Non-ISO"가 아닙니다. –

+0

이전 파일 체크인 명령 'file'bash 콘솔 : 'file ~/stare_ceny/jacek/stare_ceny/2012-07-02.csv /home/jacek/stare_ceny/2012-07-02.csv : 비 ISO 확장 ~/skrypty의 $ 파일은/var/usterki/ceny_2012-09-04_08-11 : -ASCII 문자는 CRLF로, LF 라인은 라틴어 2 ISO-8859-2 새 파일에 대한 별칭입니다 'R2D2 @ 제이 섹 terminators' -46.csv /var/usterki/ceny_2012-09-04_08-11-46.csv :/ '역 추적 (가장 최근 통화 최종) : 파일 "skrypt UTF-8 유니 코드 텍스트 ' – Dzaczek

답변

1

이 경우 일반적인 규칙은 "유니 코드 내부적으로하며 I/O 경계에서 인코딩이"- 당신은 쉽게뿐만 아니라 라인 엔딩에 그 철학을 확장 할 수 있습니다.

import io # for Python 2.6+; not needed in Python 3 

def save_file(potoczek, nazwapliku): # data, filename 
    file = io.open(nazwapliku, mode="w", newline="\r\n") # in Python 3, just "open" 
    file.write(potoczek.encode('latin2')) 
    file.close() 
    return() 

은 그럼 그냥 표준 줄 바꿈 ( \n)로 구분 일반 유니 코드 문자열로 데이터를 구축하고, SAVE_FILE 기능은 필요한 번역 처리됩니다.

+0

나는이 inforamtin이 .py ", 182 행, save_file (우다타, PLIK_SCIEZKA) 파일 "skrypt.py", 줄 108, save_file에 file.write (potoczek.encode ('latin2')) 파일 "/usr/lib/python2.6/encodings/iso8859_2.py", 12 행, in (ascii) 코덱은 98 위치에서 바이트 0xc5를 디코딩 할 수 없습니다. 서수가 범위 내에 있지 않습니다. (128) – Dzaczek

+0

덧붙여 \ R이 더 좋습니다 : D – Dzaczek

관련 문제