Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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,我从这个代码中得到一个列表,我只想要一个列表。我错过了什么?gene list.csv是一个简单的csv文件,每行一个元素。此代码在单独的列表中生成每个基因的列表,如:[['IFNAR2']、['AKT1']、['AKT2']、['IFNAR1'] gene_list = list(csv.reader(open("genelist.csv"))) 以csv中的列表形式返回行的迭代器。列表创建迭代器的列表,以便您看到列表的列表 您可能希望使用链接生成的行迭代器 如果你得到的是每行一个基因,cs

我从这个代码中得到一个列表,我只想要一个列表。我错过了什么?gene list.csv是一个简单的csv文件,每行一个元素。此代码在单独的列表中生成每个基因的列表,如:
[['IFNAR2']、['AKT1']、['AKT2']、['IFNAR1']

gene_list = list(csv.reader(open("genelist.csv")))
以csv中的列表形式返回行的迭代器。
列表
创建迭代器的列表,以便您看到列表的列表

您可能希望使用链接生成的行迭代器

如果你得到的是每行一个基因,csv不是一个好的选择。而只是迭代文件并从中创建一个列表

map(str.strip, open("genelist.csv"))
还是信用证

[e.strip() for e in open("genelist.csv")]

如果所有文件每行包含一个元素,请不要使用
csv
模块。直接读取文件即可:

gen_list = open('genelist.csv').read().splitlines()
csv
模块用于解析每行多个逗号、空格或制表符分隔的值,因此每行都作为列列表返回

如果必须对文件使用
csv
,“展开”生成的嵌套列表非常简单:

gene_list = [g[0] for g in csv.reader(open("genelist.csv"))]

这是一个列表理解,它获取由
csv.reader()
调用生成的每一行的第一列。

您可以使用一个简单的列表理解来读取文件中的所有行。如果每行只有一个项目,不确定为什么要使用csv阅读器

gene_list = [row[0] for row in csv.reader(open("genelist.csv"))]

这是预期的行为。从csv模块文档中:

从csv文件读取的每一行都作为字符串列表返回

您的文件每行有一项,因此您将获得一个包含一项的列表列表。要获取字符串列表,可以执行以下操作:

with open("genelist.csv") as f:
    f.readlines()

(您还必须从每个项目中删除换行符。)

@MartijnPieters:谢谢,修复了。非常好。谢谢你的解释,你的第一个解决方案很好用。我想这里有一点是关于关闭文件的;除非我误解了匿名文件句柄的处理方式。@BurhanKhalid:它们是自动关闭的。它们的引用计数下降到零,被垃圾收集器删除,这会触发对
.close()
的自动调用。吹毛求疵:“引用计数下降到零”并不意味着“被垃圾收集器删除”,尽管在当前版本的CPython中是这样的。你怎么会认为它是csv(“逗号分隔值”)档案?谢谢。我更了解csv模块,我感谢您的解释谢谢。我将研究使用itertools。可能对我的工作很有用。
with open("genelist.csv") as f:
    f.readlines()