簡體   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