当我使用f.write写字符串时,它只写数字/代码

时间:2017-06-07 08:22:01

标签: python

我有一段简单的代码可以将一堆字符串写入文件:

     x1          x2        y1    y2                          z1                  z2
1  abc1000000   NA pqr2000000    NA         olk78fgzu_zuii8999_ikooo            NA    
2  oljhh88999   NA lop9876666    NA                               NA            NA
3  frdt876544   NA ztr6u76532   uzrt899963  wertttts_765342_ioooosww  zuuuee_66554422_88uuiiid

但这给了我一个输出文件,如:

    data = self.measure()
    f = open('output.txt', 'w')
    print data
    for line in data:
        print 'line:', line, type(line)
        f.write(str(line))
    f.close()

我认为我的数据是unicode或者其他东西,所以我尝试了一些改变这样的事情:

0034 0045 1056
0086 9078 0567...

导致相同的文件输出 但是,当我使用它时:

f.write(unicode(line))

我在文件中获得了正确的和预期的文本:

  

hal_init()用于芯片版本0x02c4; hal_init()用于芯片版本   0x02c4ram_prog,ed_list = [edata(0x50000,0x517c1)]; ram_prog,ed_list =   [edata(0x50000,0x517c1)];摘要:;摘要:==== .......等

我不明白为什么,或者我做错了什么。很明显,我遗漏了变量'line'的格式/类型。但是type(line)只是告诉我它是一个字符串......

任何人都可以解释一下吗?

1 个答案:

答案 0 :(得分:0)

我明白了。

SublimeText 3将输出文件编码为十六进制。字符串中有一些十六进制值,我猜它有点和编程聪明的编码... Blah

不确定为什么f.write(str(line)+';'+ unicode(line))代码使ST3编码不同......

由于