如何将csv中的数据获取到python对象中

2023-11-24

我是一个Python初学者。无法以所需的对象格式将数据从 csv 导入 python 以满足 python 函数的要求。 如果我在 python 中手动创建数据(而不是从 csv 引入数据),则以下代码有效:

class Student(object):
   pass

john = Student()
#score tuple
john.score = (85.0, 42.0/2.0)

bob = Student()
bob.score = (45.0, 19.0/2.0)

john.rank = 1
bob.rank = 2

ExternalCode.AdjustStudents([john, bob])

然而,我需要它自动工作,而不必每次都手动输入数据,因为将会有数千个更新 - 因此需要能够从 csv 引入数据。

csv 文件格式为: 约翰, 85, 21, 1 鲍勃, 45, 9.5, 2

Student 对象将具有分数属性(第 2 列和第 3 列作为元组)以及排名属性(第 4 列)。所需的对象格式与上面的手动代码生成的格式相同。

手动代码生成的所需格式的一个示例是,当我在手动代码后执行以下打印时:

print(" John: score1={0[0]:.3f} score2={0[1]:.3f}".format(john.skill)) 

我得到这个结果:

约翰: 分数 1=25.000 分数 2=8.333

Cheers,

Steve


如果我理解正确的话,你是在问如何才能动态创建变量。操纵globals()dict 创建新变量不是一个好主意,您应该使用列表或字典来存储 csv 数据。

您似乎需要一个列表,所以:

  1. 定义列表 (student_list在下面的例子中)。
  2. 打开 csv 文件。
  3. 创建一个csv.reader.
  4. 迭代行。
  5. 将数字转换为浮点数。
  6. 创建一个Student实例并传递姓名和号码。
  7. 最后将此学生实例附加到student_list.

所以如果你的 csv 文件看起来像这样,

name,score1,score2,rank
john,85,21,1
sarah,72,19,2
bob,45,19,3

尝试以下代码:

import csv


class Student:

    def __init__(self, name, score, rank):
        self.name = name
        self.score = score
        self.rank = rank


student_list = []

with open('temp.csv', newline='') as csv_file:
    reader = csv.reader(csv_file)
    next(reader, None)  # Skip the header.
    # Unpack the row directly in the head of the for loop.
    for name, score1, score2, rank in reader:
        # Convert the numbers to floats.
        score1 = float(score1)
        score2 = float(score2)
        rank = float(rank)
        # Now create the Student instance and append it to the list.
        student_list.append(Student(name, (score1, score2), rank))

# Then do something with the student_list.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将csv中的数据获取到python对象中 的相关文章

随机推荐

  • 在 Redis 中存储嵌套的 javascript 对象 - NodeJS

    我最近在nodejs中从memcached切换到redis 我喜欢 node memcached 的一点是我可以将整个 javascript 对象保存在内存中 遗憾的是我无法在 redis 中做到这一点 例如 我得到以下对象 var obj
  • 尝试使用 java.exe -jar 运行我的 jar 时出现 NoClassDefFoundError...出了什么问题?

    我有一个应用程序 我正在尝试将其包装到 jar 中以便于部署 当作为一组可从 CLASSPATH 访问的类运行时 应用程序可以编译并正常运行 在 Windows cmd 窗口中 但是当我打包我的类并尝试在同一个 cmd 窗口中使用 java
  • 创建自己的 BibTeX 样式还是自定义现有样式?

    我正在寻找一种方法来定义新的BibTeX样式或自定义现有样式 我这样做有两个原因 我希望作者姓名 编辑为斜体 对于书籍 书籍 杂志 百科全书等中的文章 我想要开头的数字 Example 名字 B 书名 地点年份 站点编号 文章作者 A 文章
  • 单击按钮时单元格如何滑动

    我想在单击按钮时滑动单元格 我成功刷了手机 但我想滑动单元格中的按钮 我的代码是 NSArray tableView UITableView tableView editActionsForRowAtIndexPath NSIndexPat
  • iOS - 从 HTML 内容创建多页 PDF [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我有一个很长的 html 页面 想将其转换为多页 PDF 文件 我已按照中提供的说明进行
  • 将 NSTextField 绑定到 NSNumber

    我正在尝试使用 NSTextField 进行整数用户输入 文本字段绑定到 NSNumber 属性 在 setter 方法中 我清理输入值 确保它是 int 并在必要时设置该属性 我发送了 willChangeValueForKey 和 di
  • 如果条件不成立则防止违约

    我有一个链接 当有人点击它时 我想在让它工作之前检查一些条件 如果它是false应防止默认操作 pager next a active click function event if a 1 event preventDefault 该链接
  • 核心数据ios9:多字段唯一约束

    我知道核心数据的新功能是独特的约束 所以我决定测试它 我创建了简单的模式 当我为一个字段 例如名字 添加约束时 一切正常 如果我为另一个字段 姓氏 添加约束 核心数据分别为每个字段创建两个不同的约束 我尝试在一行中添加两个以逗号分隔的字段
  • JBehave 在场景期间跨步骤 Give/When/Then 维护数据

    我已经尝试 JBehave 一段时间了 我需要弄清楚是否存在一种方法可以在一个特定场景的运行期间跨步骤维护数据 我的意思是 是否可以在给定 何时 然后的场景中维护状态 数据 而不使用 Step Class 下的任何状态变量 是的 您可以将维
  • 在正则表达式javascript中转义问号

    我认为这是一个简单的问题 我正在尝试使用 JavaScript 中的正则表达式来搜索一个字符串在另一个字符串中的出现 如下所示 var content Hi I like your Apartment Could we schedule a
  • 使用 php 从字符串中查找文件名

    public images portfolio i vis 1 jpg 无论使用 php 的文件名是什么 我如何删除所有路径 看一下basename path public images portfolio i vis 1 jpg name
  • 耶拿从乌龟读取失败

    我刚刚将 jena 库导入到 eclipse 中以处理 rdf s 这是我的第一次尝试 但我无法读取海龟 ttl 文件 我按照以下方式尝试过 import java io import java util import com hp hpl
  • 没有final修饰符的按需初始化持有者惯用语线程安全吗

    我有预感 使用holder 习惯用法而不将holder 字段声明为final 不是线程安全的 由于Java 中不变性的工作方式 有人可以证实这一点吗 希望有一些消息来源 public class Something private long
  • 引用类型中定义的值类型存储在哪里(堆或堆栈)?

    引用类型中定义的值类型是存储在堆上还是堆栈上 如果存储在堆上 那么什么时候值类型存储在堆栈上 如果存储在堆栈上 那么当所有内容最终都以值类型结束时 堆内会存放什么 存储在堆栈上的唯一变量是函数的局部变量 对于引用类型 引用存储在堆栈上 而它
  • 如何更改 VS Code 的“资源管理器”窗口中的字体?

    有没有办法更改资源管理器窗口 左侧面板显示工作目录中的文件 而不是您编写代码的编辑器 中的字体 实际上有一个扩大在 vscode 中提供所需的功能 按照链接中的说明进行操作 添加CSS代码 monaco panel view in vsco
  • 检测postMessage是否可以发送对象?

    我正在寻找一种巧妙的方法来检测浏览器中的 postMessage 是否支持对象或字符串的发送和接收 我认为肯定有人写过一些这样做的东西 但我还没有找到解决方案 我正在使用 postMessage 向 WebWorker 发送数据 从 Web
  • Xcode 12 和 iOS 14 中的手势问题

    升级到 Xcode 12 和 iOS 14 后遇到问题 设想 我有一个嵌套的 UITableView 嵌套表视图 像下面这样 class GAllowGestureEventPassTableView UITableView UIGestu
  • new 和 new[1] 和有什么区别?

    有什么区别new and new 1 我可以用吗delete with new 1 Edit 好吧好吧 我应该提供背景 对此感到抱歉 我正在使用 VS 2010 评估 BoundsChecker 当我在 new 1 上使用 delete 时
  • 查找 int 的“字符串长度”

    基本上我想返回 int gt 值中的位数 如下所示 int 1 gt 1 int 123 gt 3 int 12345678 gt 8 我对C一无所知 所以请耐心等待 我知道 Objective C 但我使用整数和浮点数而不是 NSNumb
  • 如何将csv中的数据获取到python对象中

    我是一个Python初学者 无法以所需的对象格式将数据从 csv 导入 python 以满足 python 函数的要求 如果我在 python 中手动创建数据 而不是从 csv 引入数据 则以下代码有效 class Student obje