【问题标题】:python latin2 to Non-ISO extended-ASCII textpython latin2 到非 ISO 扩展 ASCII 文本
【发布时间】:2012-09-04 06:25:13
【问题描述】:

您好,我从 Web 编写脚本 prasing 文本,我的 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)

【问题讨论】:

  • "Non-ISO extended-ASCII" 并没有真正指定任何特定的编码。你什么意思? “latin2”是ISO-8859-2的别名,所以它绝对不是“Non-ISO”。
  • 旧文件签入命令 'file' bash 控制台:file ~/stare_ceny/jacek/stare_ceny/2012-07-02.csv /home/jacek/stare_ceny/2012-07-02.csv: Non-ISO extended-ASCII text, with CRLF, LF line terminators latin 2 是 ISO-8859-2 的别名 新文件 ` jacek@R2D2:~/skrypty$ 文件 /var/usterki/ceny_2012 -09-04_08-11-46.csv /var/usterki/ceny_2012-09-04_08-11-46.csv:UTF-8 Unicode 文本 `

标签: python unicode ascii codepages


【解决方案1】:

这种情况下的一般规则是“在内部使用 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) 分隔,save_file 函数将负责所需的翻译。

【讨论】:

  • 我有这个信息:/ Traceback (most recent call last): File "skrypt.py", line 182, in <module> save_file(udata,PLIK_SCIEZKA) File "skrypt.py", line 108, in save_file file.write(potoczek.encode('latin2')) File "/usr/lib/python2.6/encodings/iso8859_2.py", line 12, in encode return codecs.charmap_encode(input,errors,encoding_table) UnicodeDecodeError: 'ascii' codec can't decode byte 0xc5 in position 98: ordinal not in range(128)
猜你喜欢
  • 1970-01-01
  • 2014-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-06
  • 2011-03-31
相关资源
最近更新 更多