如何使 csv 文件适当地拆分行?
how to make csv file split the lines appropriately?
我有一个巨大的 csv 文件,大约 100 M。我尝试对其执行 head
,它会吐出整个 csv,无论我要求的行数如何。
head data.csv
和
head -1 data.csv
给出相同的结果,即整个文件。
后来我注意到文件中根本没有行:
wc -l data.csv
0 data.csv
我在 excel 中打开 csv,它看起来应该是这样。而且,我再次将其保存为 csv。
如何将行恢复到我的 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'))
这显示了隐形字符^M
:
cat -vets data.csv >> new_data.csv
然后,这将用换行符 $\n
:
替换不可见字符 ^M
sed -i .copy 's/\^M/\'$'\n/g' new_data.csv
然后当您 head new_data.csv
时,您会看到线条适当地分开了。
我有一个巨大的 csv 文件,大约 100 M。我尝试对其执行 head
,它会吐出整个 csv,无论我要求的行数如何。
head data.csv
和
head -1 data.csv
给出相同的结果,即整个文件。
后来我注意到文件中根本没有行:
wc -l data.csv
0 data.csv
我在 excel 中打开 csv,它看起来应该是这样。而且,我再次将其保存为 csv。
如何将行恢复到我的 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'))
这显示了隐形字符^M
:
cat -vets data.csv >> new_data.csv
然后,这将用换行符 $\n
:
^M
sed -i .copy 's/\^M/\'$'\n/g' new_data.csv
然后当您 head new_data.csv
时,您会看到线条适当地分开了。