Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用python跳过csv文件中的标题行_Python_Csv - Fatal编程技术网

无法使用python跳过csv文件中的标题行

无法使用python跳过csv文件中的标题行,python,csv,Python,Csv,我正在使用python中的CSV模块将CSV读入内存,我需要跳过标题行 我正在使用下一个命令跳过标题,但它不起作用 import csv with open(aws_env_list) as csv_file: csv_reader = csv.reader(csv_file, delimiter=',') next(csv_reader) 标题仍在生成中,使我的脚本崩溃。我的脚本生成以下行: Working in AWS Account: companyAccountNam

我正在使用python中的CSV模块将CSV读入内存,我需要跳过标题行

我正在使用下一个命令跳过标题,但它不起作用

import csv
with open(aws_env_list) as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=',')
    next(csv_reader)
标题仍在生成中,使我的脚本崩溃。我的脚本生成以下行:

Working in AWS Account:  companyAccountName,AWSAccountName,Description,LOB,AWSAccountNumber,CIDRBlock,ConnectedtoMontvale,PeninsulaorIsland,URL,Owner,EngagementCode,CloudOpsAccessType
在原始CSV中,标题仅位于第一行

我演讲的前几行


上面的错误是什么?为什么不跳过标题?有更好的方法吗?

我认为您没有正确使用下一个函数

以下是文档中的示例:

import csv

with open('eggs.csv', newline='') as csvfile:
    spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
    for row in spamreader:
        print(', '.join(row))
当您使用csv.reader时,它将获取csv文件,并为每一行创建一个iterable对象。因此,如果要跳过第一行,只需对标题行进行此更改

with open(aws_env_list) as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=',')
    for row in list(csv_reader)[1:]:
        """ do whatever action """

当您将[1:]添加到csv_reader的末尾时,它会告诉它仅选择第二个对象,因为0是第一个对象。实际上,您创建的对象的子集不包含第一个元素。

我认为您没有正确使用下一个函数

以下是文档中的示例:

import csv

with open('eggs.csv', newline='') as csvfile:
    spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
    for row in spamreader:
        print(', '.join(row))
当您使用csv.reader时,它将获取csv文件,并为每一行创建一个iterable对象。因此,如果要跳过第一行,只需对标题行进行此更改

with open(aws_env_list) as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=',')
    for row in list(csv_reader)[1:]:
        """ do whatever action """

当您将[1:]添加到csv_reader的末尾时,它会告诉它仅选择第二个对象,因为0是第一个对象。本质上,您创建的对象子集不包含第一个元素。

您需要清楚它不起作用的含义。该代码将跳过csv文件的第一行,可能头超过两行。我们不知道,因为我们看不到有关该文件的任何信息。好的,我将立即更新我的OP。粘贴的csv有制表符分隔符。您可能希望将代码更新为csv\u reader=csv.readercsv\u文件,分隔符='\t'。你不会在交互提示下输入这个,是吗?谢谢,不,这是复制粘贴。你需要弄清楚它不起作用的意思。该代码将跳过csv文件的第一行,可能头超过两行。我们不知道,因为我们看不到有关该文件的任何信息。好的,我将立即更新我的OP。粘贴的csv有制表符分隔符。您可能希望将代码更新为csv\u reader=csv.readercsv\u文件,分隔符='\t'。您不会在交互提示下键入此内容,对吗?谢谢,这是一个复制粘贴。使用next是正确的,因为它不会扩展迭代器,而您的代码会这样做。对于大型CSV文件,这将导致大量不必要的内存使用。我怀疑问题在于OP在生成第一行并丢弃itcsv_reader[1:]后没有开始迭代,因为reader对象是迭代器,所以它不可订阅。从技术上讲,这可以通过执行listcsv_reader[1:]来解决,但这违背了拥有迭代器的目的。OP在NextSV_reader上做了正确的事情。@roganjosh:切片根本不起作用。itertools.isliceCv_阅读器,1,另一方面没有。。。OP应该是tab时,它的分隔符逗号是错误的,但这不会导致此问题。有一件事可以让这行看起来没有被跳过,那就是在交互式提示中运行代码。未分配表达式的结果以交互模式回显到终端。使用next是正确的,因为它不会扩展迭代器,而代码会这样做。对于大型CSV文件,这将导致大量不必要的内存使用。我怀疑问题在于OP在生成第一行并丢弃itcsv_reader[1:]后没有开始迭代,因为reader对象是迭代器,所以它不可订阅。从技术上讲,这可以通过执行listcsv_reader[1:]来解决,但这违背了拥有迭代器的目的。OP在NextSV_reader上做了正确的事情。@roganjosh:切片根本不起作用。itertools.isliceCv_阅读器,1,另一方面没有。。。OP应该是tab时,它的分隔符逗号是错误的,但这不会导致此问题。有一件事可以让这行看起来没有被跳过,那就是在交互式提示中运行代码。未指定表达式的结果以交互模式回显到终端。