这里是整体代码,用于获取一个制表符分隔的文本文件,并创建一个仅包含前两个值的新文件。
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/