Python 将换行符写入文件给出了 ਍一洀攀ऀ䄀爀碗碗猀琀ഀ 而不是换行符

标签 python line newline line-breaks

这里是整体代码,用于获取一个制表符分隔的文本文件,并创建一个仅包含前两个值的新文件。

    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()

当它进入时:

Hello world<tab>how are you?<tab>Groovy
Like pie?<tab>I love it<tab>omnomnom
Go pikachu!<tab>Use pound!<tab>She like

结果是:

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

我怀疑 '\n' 不是一个换行符,谷歌搜索它坚持认为“它肯定是\n 0_0”

更新:

由于下面的回答,(谢谢!)在 Linux 命令行上发现:

file peskyInputFile.txt

告诉你编码,还有那个

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

会将 UTF-16 文件转换为 UTF-8,如果您不需要处理 UTF16,这会避免麻烦

最佳答案

文件以 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
䰊椀欀攀 瀀椀攀㼀ऀ䤀 氀漀瘀攀 椀琀ऀ漀洀渀漀洀渀漀洀

关于Python 将换行符写入文件给出了 ਍一洀攀ऀ䄀爀碗碗猀琀ഀ 而不是换行符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9505971/

相关文章:

Python Pandas cumsum 移位 n

Python 在类定义之外覆盖 __str__

Python - 在两个远程服务器之间传输文件,执行 python 脚本

css - 如何制作之字形线,垂直而不是水平的 css

c - 从 fgets() 输入中删除尾随换行符

python - TypeError : PyQt4. QtCore.QVariantAnimation 表示 C++ 抽象类,无法实例化

JavaScript - 如何为红线绘制黑色轮廓(或描边) - leaflet mapbox

mysql 命令行追加数据库

regex - 使用 logback.xml 中的 replace(p){r, t} 转换将 '~' 替换为换行符 ('\n' )

python - 在 nestedExpr 中保留换行符