Python向文件写入换行符给出了਍一愀洀攀ऀ䄀爀琀椀而不是newlin

2024-10-02 02:36:11 发布

您现在位置:Python中文网/ 问答频道 /正文

下面是总体代码,用于获取制表符删除的文本文件,并创建一个只接受前两个值的新文件。在

    fin = open("in.txt", 'r')
    fout = open("out.txt", 'w')

    for line in fin:

        mrList = line.split('\t')
        fout.write(mrList[0] + "\t" + mrList[1])
        fout.write('\n')

    fin.close()
    fout.close()

当这个进入:

^{pr2}$

结果是:

Hello world<tab>how are you?਍䰀椀欀攀 瀀椀攀㼀ऀ䤀 氀漀瘀攀 椀琀ഀ
Go pikachu!<tab>Use pound!਍

我怀疑'\n'不是一个新行,google它坚持说“绝对是\n 0\u 0”

更新:

既然回答如下,(谢谢!)在Linux命令行上发现:

file peskyInputFile.txt

告诉你编码,然后

iconv -c -f utf-16 -t utf-8 peskyInputFile.txt -o outputFile.txt

将一个UTF-16文件转换为UTF-8,这样可以避免不需要处理UTF16的麻烦


Tags: 文件intxtcloselineopentabutf
1条回答
网友
1楼 · 发布于 2024-10-02 02:36:11

这个文件是用UTF-16编码的,您试图像ASCII一样处理它。当你去掉换行符时,你只消耗一个字节,因此UTF-16在下一个换行符之前是关闭的。有关解决方案和说明,请参见“Python thinks a 3000-line text file is one line long?”。在

这就是你要做的:

>>> b = u'Like pie?\tI love it\tomnomnom'.encode('utf-16le')
>>> s = ('\n' + b + '\0').decode('utf-16le')
>>> print s
䰊椀欀攀 瀀椀攀㼀ऀ䤀 氀漀瘀攀 椀琀ऀ漀洀渀漀洀渀漀洀

相关问题 更多 >

    热门问题