【问题标题】:Copying rows from one csv file to another based on a condition in C根据C中的条件将行从一个csv文件复制到另一个文件
【发布时间】:2015-08-03 23:11:58
【问题描述】:

我打算根据列出的索引数组将某些行从以空格分隔的 CSV 文件(每行的格式不是很严格,就每列分隔的空格数而言)复制到另一个要复制的行数。

在 Python 中(使用 csv 包),我会使用这样的东西:

with open("final_shapes.csv", "a") as myfile:
    myfile.write(str([shapes_list[m] for m in range(0, len(x)) if (x[m] == 1)])  + "\n" )

我想知道是否有办法在 C 中执行此操作(按行处理 csv 文件,而不是按字符处理)。谢谢!

编辑:我不想使用新模块,但如果它真的让工作更容易,那就这样吧。

编辑 2:我正在阅读的 CSV 文件看起来像这样(分隔两列的空格数是恒定的) -

1          var_0_9        SB 1.00000000000000e+00     0.00000000e+00     1.00000000e+00    
2          var_0_17       SB 0.00000000000000e+00     0.00000000e+00     1.00000000e+00    
3          var_0_26       MK 1.00000000000000e+00     0.00000000e+00     1.00000000e+00    
4          var_0_34       SB 1.00000000000000e+00     0.00000000e+00     1.00000000e+00

【问题讨论】:

    标签: python c csv copy


    【解决方案1】:

    嗯,

    fgets() 将从文件中读取一行,例如 csv 文件。

    通过跟踪已读取的行数并知道要复制哪些行号,实际代码将非常简单。

    代码将需要:

    几个 'FILE * 变量, 为每个变量调用“fopen()”,(一定要检查 fopen() 失败),

    循环计数器,

    while( fgets(,,) ) 来控制循环。

    在循环内,

    一个'if'来决定是否要复制该行,

    要复制到输出文件的每一行的 fwrite()。

    最后,每个 FILE * 变量的 fclose()。

    最后,一个字符缓冲区[###] 用于保存一行

    【讨论】:

    • 谢谢!我正在尝试使用 \n 作为分隔符的 fscanf() 变体,但我一直无法得到它。希望这应该可行!
    猜你喜欢
    • 1970-01-01
    • 2018-09-29
    • 2022-01-04
    • 2015-11-21
    • 1970-01-01
    • 2017-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多