繁体   English   中英

python打开文本文件,每个字符之间有一个空格

[英]python opens text file with a space between every character

每当我尝试使用python命令fread = open('input.csv', 'r')打开.csv文件时,它总是打开每个字符之间带有空格的文件。 我猜这是文本文件有问题,因为我可以使用相同的命令打开其他文本文件并正确加载它们。 有谁知道为什么文本文件会在python中加载?

谢谢。

更新

好吧,我是在Jarret Hardie的帖子的帮助下得到的

这是我用来将文件转换为ascii的代码

fread = open('input.csv', 'rb').read()
mytext = fread.decode('utf-16')
mytext = mytext.encode('ascii', 'ignore')
fwrite = open('input-ascii.csv', 'wb')
fwrite.write(mytext)

谢谢!

递归的帖子可能是正确的......文件的内容很可能用多字节字符集编码。 事实上,如果是这种情况,您可以在python本身中读取文件而无需先在python之外进行转换。

尝试类似的东西:

fread = open('input.csv', 'rb').read()
mytext = fread.decode('utf-16')

'b'标志确保将文件读取为二进制数据。 你需要知道(或猜测)原始编码...在这个例子中,我使用了utf-16,但是使用了YMMV。 这会将文件转换为unicode。 如果你真的有一个带有多字节字符的文件,我不建议将它转换为ascii,因为你最终可能会丢失很多字符。

编辑:感谢您上传文件。 文件前面有两个字节,表示确实使用了宽字符集。 如果你很好奇,可以在十六进制编辑器中打开文件,就像有人建议的那样...你会在文本版本中看到像'ID |那样的东西。 (等等)。 点是每个char的额外字节。

上面的代码片段似乎可以在我的机器上使用该文件。

该文件以某种unicode编码进行编码,但您将其视为ascii。 尝试在python中使用之前将文件转换为ascii。

csv不是一个简单的txt文件,其值用逗号分隔。 只需尝试使用文本编辑器打开它,看看文件是否正确形成。

要读取编码文件,只需使用codecs.open替换open codecs.open

fread = codecs.open('input.csv', 'r', 'utf-16')

这是一种快速简便的方法,特别是如果python不能正确解析输入

sed 's/ \(.\)/\1/g'

它从来没有发生在我身上,但正如truppo所说,文件肯定有问题。

尝试在Excel / BrOffice Calc中打开文件,再次将文件另存为Csv。

如果问题仍然存在,请尝试数据的子集:文件的第10个/最后10个/中间10行。

好吧,我是在Jarret Hardie的帖子的帮助下得到的

这是我用来将文件转换为ascii的代码

fread = open('input.csv', 'rb').read()
mytext = fread.decode('utf-16')
mytext = mytext.encode('ascii', 'ignore')
fwrite = open('input-ascii.csv', 'wb')
fwrite.write(mytext)

谢谢!

以二进制模式'rb'打开文件。 在HEX编辑器中检查它并检查空填充“00”。 用Scintilla Text Editor之类的文件打开文件,检查文件中的字符。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM