[英]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.