python latin2到非ISO扩展ASCII文本

python latin2到非ISO扩展ASCII文本,python,unicode,ascii,codepages,Python,Unicode,Ascii,Codepages,您好,我写的脚本使用的是来自web的文本,我的otput文件必须是非ISO扩展ASCII文本,带有CRLF、LF行终止符 如何将文件写入此代码页 def save_file(potoczek, nazwapliku): file = open(nazwapliku,"w") file.write(potoczek) file.close() return() #... t1='"'+tab[0]+'\"\n'+naglowek+wykli(zawarto

您好,我写的脚本使用的是来自web的文本,我的otput文件必须是非ISO扩展ASCII文本,带有CRLF、LF行终止符 如何将文件写入此代码页

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)

本例中的一般规则是“在内部使用Unicode;在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()

然后,只需将数据构建为常规unicode字符串,由标准换行符(
\n
)分隔,保存文件功能将处理所需的转换。

“非ISO扩展ASCII”实际上没有指定任何特定的编码。什么意思?“latin2”是的别名,因此它绝对不是“非ISO”。旧文件签入命令“file”bash控制台:
file~/stare\u ceny/jacek/stare\u ceny/2012-07-02.csv/home/jacek/stare\u ceny/2012-07-02.csv:非ISO扩展ASCII文本,带CRLF,LF行终止符
latin 2是ISO-8859-2新文件的别名`jacek@R2D2:~/skrypty$file/var/usterki/ceny_2012-09-04_08-11-46.csv/var/usterki/ceny_2012-09-04_08-11-46.csv:UTF-8 Unicode text`我有这个信息:/
回溯(最近一次调用最后一次):保存文件(udata,PLIK_SCIEZKA)文件第182行的文件“skrypt.py”“skrypt.py”,第108行,在save_file file.write(potoczek.encode('latin2'))文件/usr/lib/python2.6/encodings/iso8859_2.py),第12行,在encode return codecs.charmap_encode(输入,错误,编码表)unicodedecodecorror:“ascii”编解码器无法对第98位的字节0xc5进行解码:序号不在范围内(128)