gpt4 book ai didi

python - 如何在 python 中读取 csv 文件的特定行?

转载 作者:太空宇宙 更新时间:2023-11-04 07:39:56 24 4
gpt4 key购买 nike

我疯狂地搜索,试图找到具体如何读取 csv 文件中的行。

我需要从 1000 行中随机读取一行,每行有 3 列。第一列有一封电子邮件。我需要放入一封随机电子邮件,然后取出第 2 列和第 3 列。 (Python 2.7,csv 文件)

例子:

Name Date  Color
Ray May Gray
Alex Apr Green
Ann Jun Blue
Kev Mar Gold
Rob May Black

我需要的不是第 1 列第 3 行,而是 [Ann],她的整行。这是一个 CSV 文件,包含 1000 多个名称。我必须输入她的名字并输出她的整行。


我尝试过的

from collections import namedtuple
Entry = namedtuple('Entry', 'Name, Date, Color')
file_location = "C:/Users/abriman/Desktop/Book.csv"
ss_dict = {}
spreadsheet = file_location = "C:/Users/abriman/Desktop/Book.csv"
for row in spreadsheet:
entry = Entry(*tuple(row))
ss_dict['Ann']

我的错误是

Traceback (most recent call last):
File "<stdin>", line 2, in <module>
TypeError: __new__() takes exactly 4 arguments (2 given)

我也尝试过其他方法,但收效甚微。我是 Python 的初学者。

最佳答案

您走在正确的轨道上。第一个问题:您永远不会打开位于file_location 的文件。因此,当您迭代 for row in spreadsheet: 时,您正在迭代 spreadsheet 的字符,它们是 file_location 的字符,是 "C:/Users/..." 的字符。因此,您要做的第一件事实际上是打开文件:

spreadsheet = open(file_location, 'r')

您的循环中还有另一个问题。当您在 for 循环中遍历文件时,您会取回文件的行。因此,在每次迭代中,row 将是一行,例如“雷·梅·格雷”。当你调用 tuple() 时,你会得到一个看起来像 ('R', 'a', 'y', ' ', ' ', ' M', ...)。您需要做的是通过拆分空格来构建您的元组:

entry = Entry(*row.split())

然后,您需要添加您的词条到字典ss_dict:

ss_dict[entry.Name] = entry

最后,您可以读出 ss_dict['Ann'] 的值,但这应该在您的循环之外 - 如果您在循环内这样做,您可能会尝试读取该值ss_dict['Ann'] 在它被设置之前。总而言之,您的代码应如下所示:

from collections import namedtuple
Entry = namedtuple('Entry', 'Name, Date, Color')
file_location = "C:/Users/abriman/Desktop/Book.csv"
ss_dict = {}
spreadsheet = open(file_location, 'r') # <--
for row in spreadsheet:
entry = Entry(*row.split()) # <--
ss_dict[entry.Name] = entry # <--
print ss_dict['Ann']

顺便说一句,您收到错误消息的原因是,当您执行 for row in spreadsheet:spreadsheet 是一个字符串,row 只是一个字符,正如我提到的,所以 tuple(row) 只是一个包含一个字符的元组,因此长度为 1,所以你当您执行 *tuple(row) 时,只传递一个参数而不是三个参数。


综上所述,您可能需要考虑查看 the csv module ,它是标准库的一部分,专为读取 csv 文件而设计。从长远来看,它可能会让您的生活更轻松。

关于python - 如何在 python 中读取 csv 文件的特定行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24251471/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com