如何删除空行

时间:2018-01-06 11:13:07

标签: j

我将数据保存为csv格式,但csv文件包含很多空白行。

如何删除空白行?喜欢来自csv?

1   7   5.329618927 5.678765376
2   7   3.364469002 4.176536709
3   7   4.214949544 7.205212347
4   7   3.324136778 8.935188439
5   7   4.746355556 3.89335459



1   8   5.312160001 5.65157164
2   8   3.378701171 4.175205323
3   8   4.202770433 7.216973641
4   8   3.32496778  8.924379077
5   8   4.744037125 3.891049294

2 个答案:

答案 0 :(得分:3)

读取显示内容

的文件

假设上面的文本是您要导入的文件内容的示例(字段之间有多个空格和一些空行,那么我可能会按如下方式导入它(请注意,这不是真的一个csv文件):

   ]Dat=: cut;._2 freads 'myfile.txt'
┌─┬─┬───────────┬───────────┐
│1│7│5.329618927│5.678765376│
├─┼─┼───────────┼───────────┤
│2│7│3.364469002│4.176536709│
├─┼─┼───────────┼───────────┤
...
├─┼─┼───────────┼───────────┤
│ │ │           │           │
├─┼─┼───────────┼───────────┤
│1│8│5.312160001│5.65157164 │
├─┼─┼───────────┼───────────┤
...
├─┼─┼───────────┼───────────┤
│5│8│4.744037125│3.891049294│
└─┴─┴───────────┴───────────┘
   Dat -. (4 # a:)  NB. Dat without items consisting of 4 empty boxes
┌─┬─┬───────────┬───────────┐
│1│7│5.329618927│5.678765376│
├─┼─┼───────────┼───────────┤
...
├─┼─┼───────────┼───────────┤
│5│8│4.744037125│3.891049294│
└─┴─┴───────────┴───────────┘
   _999 ". > Dat -. (4 # a:)  NB. unbox and convert to numeric
1 7 5.32962 5.67877
...
5 8 4.74404 3.89105

您可以将此作为一行:

   ]Dat=: _999 ". > -.&(4 # a:) cut;._2 freads 'myfile.txt'
1 7 5.32962 5.67877
2 7 3.36447 4.17654
3 7 4.21495 7.20521
4 7 3.32414 8.93519
5 7 4.74636 3.89335
1 8 5.31216 5.65157
2 8  3.3787 4.17521
3 8 4.20277 7.21697
4 8 3.32497 8.92438
5 8 4.74404 3.89105

读/写csv文件

如果您要将某些数据保存/读取为csv文件,则tables/csv addon会有所帮助。

   load 'tables/csv'
   Dat writecsv jpath '~temp/myfile.csv'  NB. write to J's temp folder
290
   readcsv jpath '~temp/myfile.csv'
┌─┬─┬───────────┬───────────┐
│1│7│5.329618927│5.678765376│
├─┼─┼───────────┼───────────┤
│2│7│3.364469002│4.176536709│
├─┼─┼───────────┼───────────┤
...
├─┼─┼───────────┼───────────┤
│5│8│4.744037125│3.891049294│
└─┴─┴───────────┴───────────┘
   makenum readcsv jpath '~temp/myfile.csv'
1 7 5.32962 5.67877
2 7 3.36447 4.17654
3 7 4.21495 7.20521
4 7 3.32414 8.93519
5 7 4.74636 3.89335
1 8 5.31216 5.65157
2 8  3.3787 4.17521
3 8 4.20277 7.21697
4 8 3.32497 8.92438
5 8 4.74404 3.89105

插件会自动将2个以上维度的数组重新整形为2维,这样就不会产生任何空行。如果你仍然有空行,最好理解为什么要创建它们并防止它们被写入。如果您仍然需要删除它们,那么上面显示的技术将起作用。

答案 1 :(得分:0)

尝试按以下方法读取带空行的input.csv文件:

import csv
with open ('input.csv') as csvfile:
    # READ ALL LINES: 
    csvlines = csv.reader(csvfile, delimiter=',')

    # REMOVE BLANK LINES:
    csvlines = [x for x in csvlines if len(x) > 0]  

    # PRINT EACH LINE: 
    for onerow in csvlines:
        print(onerow)

输出:

['1   7   5.329618927 5.678765376']
['2   7   3.364469002 4.176536709']
['3   7   4.214949544 7.205212347']
['4   7   3.324136778 8.935188439']
['5   7   4.746355556 3.89335459']
['1   8   5.312160001 5.65157164']
['2   8   3.378701171 4.175205323']
['3   8   4.202770433 7.216973641']
['4   8   3.32496778  8.924379077']
['5   8   4.744037125 3.891049294']