我有一個巨大的csv文件,大約100米。我嘗試對它做一個head
,並且它吐出了整個csv,而不管我要求的行數。如何讓csv文件適當地分割行?
head data.csv
AND head -1 data.csv
給出了相同的結果,即整個文件。
我發現後,有文件中沒有臺詞都:
wc -l data.csv
0 data.csv
我在Excel中打開CSV,和它看起來它應該。而且,我將它另存爲csv。
如何獲取我的csv
文件中的行?
我有一個巨大的csv文件,大約100米。我嘗試對它做一個head
,並且它吐出了整個csv,而不管我要求的行數。如何讓csv文件適當地分割行?
head data.csv
AND head -1 data.csv
給出了相同的結果,即整個文件。
我發現後,有文件中沒有臺詞都:
wc -l data.csv
0 data.csv
我在Excel中打開CSV,和它看起來它應該。而且,我將它另存爲csv。
如何獲取我的csv
文件中的行?
這顯示了不可見字符^M
:
cat -vets data.csv >> new_data.csv
然後,這取代了不可見字符,^M
以換行符$\n
:
sed -i .copy 's/\^M/\'$'\n/g' new_data.csv
然後當你head new_data.csv
,你看線路被適當分開。
You can use this utility function from itertools, since file handle
is iterable.
def head(n, iterable):
from itertools import islice
"Return first n items of the iterable as a list"
return list(islice(iterable, n))
# to get first 20 rows
head(20,open('file.csv'))
感謝您的回答。我嘗試了這個,像這樣:'new_file = head(20,open('file.csv'))',它完成。但是,我嘗試通過執行'new_file [0]'來分割'new_file',但它永遠掛起。 – Hunle
@Hunle。我不知道爲什麼它掛在你的情況。我剛剛測試過csv文件,它工作正常。 itertools的解決方案是可靠的。嘗試打開('file.csv')作爲f: 頭(20,f) – LetzerWille
謝謝,雖然它仍然掛起。我檢查了[this](http://stackoverflow.com/questions/33289526/the-wc-l-command-shows-zero-lines-on-csv-file?rq=1),我確實看到'^M'字符。但是,即使我'cat -vets data.csv >> data_copy.csv',它'data_copy.csv'仍然存在這個問題。 – Hunle
你確定csv文件不是一個巨大的長度的行嗎? FWIW,如果文件末尾沒有換行符,即使只有一行,'wc -l'也會輸出0。 – lemonhead
這可能是'head'和Excel所使用的換行符不同的結果。詳情請看http://blog.codinghorror.com/the-great-newline-schism/。 –
這裏沒有Python的問題 –