Python 从CSV文件中提取信息

Python 从CSV文件中提取信息,python,file-handling,Python,File Handling,我想从csv文件中提取信息,为此我想创建一个“函数”,它可以在每次调用特定“行”时获取信息。下面是我的代码,但运行时返回空白。我是不是遗漏了什么?提前谢谢 班级人员: 定义初始化(self,name): self.name=名称 def importList(): 以open('attendes3.csv','r')作为f: 读卡器=csv。读卡器(f) 返回[读卡器中姓名对应的人员(姓名)] 对于导入列表()中的人员: 打印(个人姓名) 看起来您很可能在代码缩进方面遇到了问题。由于缩进,您正在

我想从csv文件中提取信息,为此我想创建一个“函数”,它可以在每次调用特定“行”时获取信息。下面是我的代码,但运行时返回空白。我是不是遗漏了什么?提前谢谢

班级人员:
定义初始化(self,name):
self.name=名称
def importList():
以open('attendes3.csv','r')作为f:
读卡器=csv。读卡器(f)
返回[读卡器中姓名对应的人员(姓名)]
对于导入列表()中的人员:
打印(个人姓名)

看起来您很可能在代码缩进方面遇到了问题。由于缩进,您正在类“person”中定义函数“importList”,另一个问题是用于调用importList的代码出现在importList本身中。没有输出的原因是因为您只声明了一个类,而没有运行任何其他代码

代码可能如下所示:

import csv

class person:
  def __init__(self,name):
    self.name = name

def importList():
  with open ('attendees3.csv','r') as f:
    reader = csv.reader(f)
    return [person (name) for name in reader]

for person in importList():
  print(person.name)
  
我能够使用以下示例csv文件内容运行它:

name
John Smith
Jane Smith
Bob Boblaw
并获得以下输出:

['name']
['John Smith']
['Jane Smith']
['Bob Boblaw']
我不会评论其他的注意事项,因为我假设您在受控环境下处理的是一段简单的代码。

您真的有一个,还是只有一个包含名称的文件?如果是后者,则不需要使用
csv.reader()
,只需以正常方式读取文件即可

如果是前者,则行作为字符串列表返回,每个字符串都是文件中的一个字段。默认情况下,字段之间用逗号分隔。您需要根据需要访问各个字段。您的代码将整行(一个列表)传递到
person
构造函数中,因此member
name
的值将是该列表,而不是作为字符串的名称

假设CSV文件中只有一个字段,
行[0]
将是CSV读取器返回的行中的该字段。您可以更改函数以访问行中的第一项,如下所示:

def importList():
    with open ('attendees3.csv', newline='') as f:
        reader = csv.reader(f)
        return [person(row[0]) for row in reader]
def importList():
    with open ('attendees3.csv') as f:
        return [person(line.strip()) for line in f]
如果您没有“真实”的CSV文件,可以这样读取:

def importList():
    with open ('attendees3.csv', newline='') as f:
        reader = csv.reader(f)
        return [person(row[0]) for row in reader]
def importList():
    with open ('attendees3.csv') as f:
        return [person(line.strip()) for line in f]

这段代码只是读取每一行,删除任何前导和尾随空格,并创建
person
对象。

这是否回答了您的问题?