我有一个巨大的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的问题 –