当前位置: 首页 > 面试题库 >

我如何解析csv文件以先获取列名,然后获取与其相关的行?

严玉泽
2023-03-14
问题内容

这是我的CSV

column1,column2,column3,column4,column5
column1_row1,column2_row1,column3_row1,column4_row1,column5_row1
column1_row2,column2_row2,column3_row2,column4_row2,column5_row2
column1_row3,column2_row3,column3_row3,column4_row3,column5_row3
column1_row4,column2_row4,column3_row4,column4_row4,column5_row4
column1_row5,column2_row5,column3_row5,column4_row5,column5_row5
column1_row6,column2_row6,column3_row6,column4_row6,column5_row6
column1_row7,column2_row7,column3_row7,column4_row7,column5_row7
column1_row8,column2_row8,column3_row8,column4_row8,column5_row8
column1_row9,column2_row9,column3_row9,column4_row9,column5_row9

第一行是列的名称。我试过fgetcsv(),但所有要做的就是显示所有行。而不是我想要的。我该怎么做?

因此,如果我将数据最后放入数组中,我将能够打印出表格格式的数据,就像excel中所示。

谢谢

这是我的样本:

$filename = "upload/sample.csv";
if (($handle = fopen($filename, 'r')) !== FALSE)
{
    while (($row = fgetcsv($handle, 1000, ",")) !== FALSE) 
    {
       print_r($row);
     }
}

这是我的输出:(我将$ row放到pre中,以便可以显示它)

Array
(
    [0] => column1
    [1] => column2
    [2] => column3
    [3] => column4
    [4] => column5
column1_row1
    [5] => column2_row1
    [6] => column3_row1
    [7] => column4_row1
    [8] => column5_row1
column1_row2
    [9] => column2_row2
    [10] => column3_row2
    [11] => column4_row2
    [12] => column5_row2
column1_row3
    [13] => column2_row3
    [14] => column3_row3
    [15] => column4_row3
    [16] => column5_row3
column1_row4
    [17] => column2_row4
    [18] => column3_row4
    [19] => column4_row4
    [20] => column5_row4
column1_row5
    [21] => column2_row5
    [22] => column3_row5
    [23] => column4_row5
    [24] => column5_row5
column1_row6
    [25] => column2_row6
    [26] => column3_row6
    [27] => column4_row6
    [28] => column5_row6
column1_row7
    [29] => column2_row7
    [30] => column3_row7
    [31] => column4_row7
    [32] => column5_row7
column1_row8
    [33] => column2_row8
    [34] => column3_row8
    [35] => column4_row8
    [36] => column5_row8
column1_row9
    [37] => column2_row9
    [38] => column3_row9
    [39] => column4_row9
    [40] => column5_row9
)

问题答案:

要一次阅读所有内容,可以使用:

$csv = array_map("str_getcsv", file("file1.csv",FILE_SKIP_EMPTY_LINES));
$keys = array_shift($csv);

要将所有行变成一个很好的关联数组,可以应用:

foreach ($csv as $i=>$row) {
    $csv[$i] = array_combine($keys, $row);
}


 类似资料:
  • 问题内容: 我在jmeter.properties文件中做了以下更改: 但是仍然找不到我的.csv文件在哪里。 谁能帮帮我吗。 问题答案: 除了在jmeter.properties中完成的配置外: 1)GUI: 汇总报告结果配置 2)CLI: 在test.csv您将获得CSV格式的结果。

  • 问题内容: 我的源数据在一个TSV文件中,包含6列和超过200万行。 这是我要完成的工作: 我需要读取此源文件中3列(3、4、5)中的数据 第五列是整数。我需要使用此整数值来复制行条目,并使用第三和第四列中的数据(按整数倍)。 我想将#2的输出写入CSV格式的输出文件。 以下是我想到的。 我的问题:这是一种有效的方法吗?尝试进行200万行时,它似乎很密集。 首先,我制作了一个示例选项卡单独的文件以

  • 快速编辑:正如下面指出的,我应该做BFS,但我需要一个点来停止检索新字段,我还没有时间考虑。谢谢你的帮助! 我试图使用Java反射递归地获取类的字段,本质上创建一个树来显示 这是一个递归解析器,所以我认为递归显示函数是很酷的。不幸的是,它压垮了我。 示例类Foo,具有Class1和Class2字段,每个字段可以有更多不同类的字段: 我的递归方法: println已经用于测试,Foo的一个示例输出(

  • 问题内容: 我的Android应用程序中有以下字符串: 我需要操纵字符串并为该输出分割字符串: 我需要始终取字符串的最后一个元素。 如何在Java中输出此内容? 我非常感谢您在解决此问题方面可以给我的任何帮助。 问题答案: 另一种可能性:

  • 问题内容: 我似乎无法从Yahoo Finance获得CSV股票文件来“成功”加载。我已经测试了来自其他问题的不同回调和建议,但它们似乎都不起作用- 大多数都没有输出任何内容。 这段代码会发出警报(``错误’‘回调),但是可以在网络面板中成功看到CSV文件。网络面板中的数据按预期显示为“ XOM,Exxon Mobile Corpo”(因此确实已加载)。 我想真正的问题是如何获取我知道的数据。我现

  • 我用谷歌浏览器创建了一个“.har”文件,创建了一个加特林模拟。我改变了输入参数