如何将 csv 文件的内容读入类中,并将每个 csv 行作为类实例

2024-03-10

我是一名 Python 新手,几天来我一直在为课堂作业而苦苦挣扎。我有一个 csv 文件,其中包含这样的数据:

id,latitude,longitude,city,label,yr1970,yr1975,yr1980,yr1985,yr1990,yr1995,yr2000,yr2005
1,35.6832085,139.8089447,Tokyo,Tokyo,23.3,26.61,28.55,30.3,32.53,33.59,34.45,35.62

该文件大约有 40 行,每行包含与世界城市相关的数据。如您所见,顶行是标题。我应该在 Python 中创建一个类并将 csv 文件读入该类,其中每一行都成为该类的一个实例。然后我将类实例存储在列表中。我已经能够创建一个存储所有数据的实例,但我似乎无法为每一行创建一个实例(而且我显然不想手动执行此操作)。

这是我到目前为止所得到的:

import csv
Cities = []


with open('filepath','rb') as f:
cityList = csv.reader(f)
for row in cityList:
    if row != 'label':
        for row in cityList:
            citysName = row[3]


            class City:

                def __init__(self, cityName=row[3], Label=row[4], Lat=row[1],
                         Lon=row[2], yr1970=row[5], yr1975=row[6], yr1980=row[7],
                             yr1985=row[8], yr1990=row[9], yr1995=row[10], yr2000=row[11],
                             yr2005=row[12], yr2010=row[13]):
                    self.cityName = cityName
                    self.label = Label
                    self.lat = Lat
                    self.lon = Lon
                    self.yr1970 = yr1970
                    self.yr1975 = yr1975
                    self.yr1980 = yr1980
                    self.yr1985 = yr1985
                    self.yr1990 = yr1990
                    self.yr1995 = yr1995
                    self.yr2000 = yr2000
                    self.yr2005 = yr2005
                    self.yr2010 = yr2010

            citysName = City()

            Cities.append(citysName.cityName)
            Cities.append(citysName.label)
            Cities.append(citysName.lat)
            Cities.append(citysName.lon)
            Cities.append(citysName.yr1970)
            Cities.append(citysName.yr1975)
            Cities.append(citysName.yr1980)
            Cities.append(citysName.yr1985)
            Cities.append(citysName.yr1990)
            Cities.append(citysName.yr1995)
            Cities.append(citysName.yr2000)
            Cities.append(citysName.yr2005)
            Cities.append(citysName.yr2010)

        print Cities

再说一次,我对 Python(以及一般的编码)还很陌生,我意识到这段代码不好,但我很难找到将 csv 文件读入 Python 类的技巧。


你可以试试这个:

import csv
class City:
   def __init__(self, row, header):
        self.__dict__ = dict(zip(header, row))

data = list(csv.reader(open('file.csv')))
instances = [City(i, data[0]) for i in data[1:]]

但是,由于您提到有很多行,您可能需要为每个城市创建一个 id 来充当列表中的字符串表示形式:

import csv
class City:
   def __init__(self, row, header, the_id):
       self.__dict__ = dict(zip(header, row)) 
       self.the_id = the_id
   def __repr__(self):
       return self.the_id

data = list(csv.reader(open('file.csv')))
instances = [City(a, data[0], "city_{}".format(i+1)) for i, a in enumerate(data[1:])]

您的输出将是这样的列表:

[city_1, city_2, city_3...]

任何属性都可以像这样调用:

instances[1].latitude

关于您最近的评论,要按城市名称访问城市属性,您可以稍微重组instances:

instances = {a[3]:City(a, data[0], "city_{}".format(i+1)) for i, a in enumerate(data[1:])}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 csv 文件的内容读入类中,并将每个 csv 行作为类实例 的相关文章

  • Pandas 连接问题:列重叠但未指定后缀

    我有以下数据框 print df a mukey DI PI 0 100000 35 14 1 1000005 44 14 2 1000006 44 14 3 1000007 43 13 4 1000008 43 13 print df b
  • Paramiko SSHException 通道已关闭

    我一直在使用 Paramiko 在 Linux Windows 机器上发送命令 它可以很好地在 Ubuntu 机器上远程执行测试 但是 它不适用于 Windows 7 主机 以下是我收到的错误 def unit for event self
  • Django 不会以奇怪的错误“AttributeError: 'module' object has no attribute 'getargspec'”启动

    我对 Django 的内部结构有点缺乏经验 所以我现在完全陷入困境 它昨天起作用了 但我不记得我改变过任何重要的东西 当我转身时DEBUG True任何恰好位于列表中第一个的模块上都有堆栈跟踪 Traceback most recent c
  • Python——捕获异常的效率[重复]

    这个问题在这里已经有答案了 可能的重复 Python 常见问题解答 异常有多快 https stackoverflow com questions 8107695 python faq how fast are exceptions 我记得
  • Django 模型字段默认基于另一个模型字段

    我使用 Django Admin 构建一个管理站点 有两张表 一张是ModelA其中有数据 另一个是ModelB里面什么也没有 如果一个模型字段b b in ModelB为None 可以显示在网页上 值为ModelA的场a b 我不知道该怎
  • 按多个键分组并对字典列表的值进行汇总/平均值

    在Python中按多个键进行分组并对字典列表进行汇总 平均值的最Pythonic方法是什么 假设我有一个字典列表 如下所示 input dept 001 sku foo transId uniqueId1 qty 100 dept 001
  • 在 iPython/pandas 中绘制多条线会生成多个图

    我试图了解 matplotlib 的状态机模型 但在尝试在单个图上绘制多条线时遇到错误 据我了解 以下代码应该生成包含两行的单个图 import pandas as pd import pandas io data as web aapl
  • Pandas groupby apply 执行缓慢

    我正在开发一个涉及大量数据的程序 我正在使用 python pandas 模块来查找数据中的错误 这通常工作得非常快 然而 我当前编写的这段代码似乎比应有的速度慢得多 我正在寻找一种方法来加快速度 为了让你们正确测试它 我上传了一段相当大的
  • 使用 WSGI 在 Windows XAMPP 中设置 Python 路径

    我正在 Webfaction 上设置实时服务器的开发版本 在本地计算机上的虚拟 Apache 服务器环境 运行没有任何错误 中运行 Django 应用程序 XP 使用 Python 2 6 运行 XAMPP Lite 我可以提交更改通过 G
  • PyArmor - 打包为一个可执行文件

    当我执行此命令时 您好 使用 PyArmor pyarmor pack main py 它将它打包到一个名为的文件夹中dist里面包含我的 exe 以及许多 Python 扩展文件 据我所知 PyArmor 使用 PyInstaller 来
  • uri 警告中缺少端口:使用 Python OpenCV cv2.VideoCapture() 打开文件时出错

    当我尝试流式传输 ipcam 时 出现了如下所示的错误 tcp 000000000048c640 uri 中缺少端口 警告 打开文件时出错 build opencv modules videoio src cap ffmpeg impl h
  • 根据第三个变量更改散点图中的标记样式

    我正在处理多列字典 我想绘制两列 然后根据第三列和第四列更改标记的颜色和样式 我很难改变 pylab 散点图中的标记样式 我的方法适用于颜色 不幸的是不适用于标记样式 x 1 2 3 4 5 6 y 1 3 4 5 6 7 m k l l
  • 用于多个窗口的 Tkinter 示例代码,为什么按钮无法正确加载?

    我正在编写一个程序 应该 按一下按钮即可打开一个窗口 按另一个按钮关闭新打开的窗口 我使用类 以便稍后可以将代码插入到更大的程序中 但是 我无法正确加载按钮 import tkinter as tk class Demo1 tk Frame
  • Jupyter Notebook 中的深色模式绘图 - Python

    我正在使用 Jupyter Notebook 目前正在使用 JupyterThemes 的深色日光主题 我注意到我的绘图不是处于黑暗模式 并且文本仍然是黑色并且在日光照射的背景上无法读取 JupyterThemes 的自述文件建议在 ipy
  • 根据列索引重命名 Dataframe 列

    是否有内置函数可以按索引重命名 pandas 数据框 我以为我知道列标题的名称 但事实证明第二列中有一些十六进制字符 根据我接收数据的方式 我将来可能会在第 2 列中遇到这个问题 因此我无法将这些特定的十六进制字符硬编码到 datafram
  • Django Rest Framework POST 更新(如果存在或创建)

    我是 DRF 的新手 我阅读了 API 文档 也许这是显而易见的 但我找不到一个方便的方法来做到这一点 我有一个Answer与 a 具有一对一关系的对象Question 在前端 我曾经使用 POST 方法来创建发送到的答案api answe
  • python dicttoxml 多次使用相同的键

    我正在尝试做如下所示的 xml
  • 在 scipy 中创建新的发行版

    我试图根据我拥有的一些数据创建一个分布 然后从该分布中随机抽取 这是我所拥有的 from scipy import stats import numpy def getDistribution data kernel stats gauss
  • Python 导入非常慢 - Anaconda python 2.7

    我的 python import 语句变得非常慢 我使用 Anaconda 包在本地运行 python 2 7 导入模块后 我编写的代码运行得非常快 似乎只是导入需要很长时间 例如 我使用以下代码运行了一个 tester py 文件 imp
  • 使用 SERVER_NAME 时出现 Flask 404

    在我的 Flask 配置中 我将 SERVER NAME 设置为 app example com 之类的域 我这样做是因为我需要使用url for with external网址 如果未设置 SERVER NAME Flask 会认为服务器

随机推荐

  • 如何在 Swift 中压缩展开多个选项?

    我想解开这 6 个可选变量 如果它们为空 我想给它们一个空字符串值 这样我就可以将这些变量打包到发送到 API 的参数数组中 我仍然是 Swift 的初学者 这是我理解如何实现这一点的唯一最简单的方法 但我内心的编码员说这看起来很多余 而且
  • 错误:无法在此小部件上方找到正确的提供者< >

    我看不出我在下面做错了什么 但它抛出了一些提供程序错误和构建上下文 发生这种情况是因为您使用了BuildContext不包括提供者 你的选择 有以下几种常见场景 您在您的目录中添加了一个新的提供商main dart并执行热重载 要修复 请执
  • 如何清除 Eclipse Indigo 的缓存

    我想知道清除 Eclipse Indigo 缓存的标准方法是什么 您可以在启动 eclipse 时使用 clean 参数 例如 C eclipse eclipse exe vm C Program Files Java jdk1 6 0 2
  • 如何使用 Moles 通过 LINQ 从表中重定向选择?

    我有一个名为 订阅 的表 我想将该表中的任何 LINQ 选择重定向到 Moles lambda 以便从该表中只返回 3 行 基本上我想绕过对数据库的调用 到目前为止 我的代码如下所示 lazy loader is here to handl
  • 将现有的 C++(.h 和 .cpp)文件转换为 Android 的 java [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在 Eclipse 下为 Android 进行开发 我有一些 C h 和 cpp 文件希望在我的 A
  • Visual Studio 2015 发布 Web 仅具有自定义选项

    我正在使用 Visual Studio 2015 进行网络项目的网络发布 但似乎网络发布配置文件中的几个选项丢失了 此链接中应该包含选项使用 Visual Studio 2015 通过 Web 部署发布到 IIS http docs asp
  • 如何防止更改数组或对象的值

    我是 Java 初学者 在开发程序时 我使用构造函数创建了一个对象 并以变量作为参数 但是 当我在创建对象后更改变量的值时 我的对象具有第二个值而不是第一个值 我不希望我的对象改变值 我该怎么办 public class Person pu
  • Twitter Bootstrap - 全宽背景(图片)

    我目前正在进行一个项目 正在尝试很棒的 Twitter Bootstrap 包括响应式网格 除了一个问题之外 一切都运行良好 你如何给予 container 包含网格 背景颜色 例子 div class container green di
  • 每个请求上的 51Degrees 重新加载会减慢 ASP.NET MVC 的速度

    添加 51Degrees 移动检测库后 我的 ASP NET MVC 3 项目速度慢得像爬行一样 51Degrees 日志文件定义为
  • @Value 在单元测试中返回 null

    我有一个带有端点测试配置类和单元测试的 Spring Boot 应用程序来测试我的 http 客户端 我试图从位于我的 src test 中的 application properties 获取我的服务器地址和端口 所有类都在我的 src
  • 如何在action方法中获取匹配的token参数值?

    如果我的语法中有这样的内容 grammar G token tab indent Int level Using just level would require to have the same effect so use a code
  • Jquery 5秒后显示按钮[重复]

    这个问题在这里已经有答案了 所以我得到了这个按钮 我需要在 5 秒后显示它 我没有 jquery 或 javascript 经验 HTML 代码 p You need to wait 0 before you can proceed p
  • 有没有像 Reflector 这样的 COM 库工具?

    有没有像 Reflector 这样的 COM 库工具 我想打开一个 COM 库并浏览类和接口 就像在 Reflector 中一样 如果可能的话 我宁愿不安装 Visual Basic 6 0 来执行此操作 但方式不同 有许多工具可以让您检查
  • 在 Sqlalchemy 中导入 create_engine 时出现循环导入错误

    我正在尝试使用 Python 进行 CS50 Web 开发课程 在 sql 部分中 在从 sqlalchemy 导入 create engine 时出现此错误 ImportError 无法从部分初始化的模块 sqlalchemy 导入名称
  • PHP 事件监听器最佳实践实现

    我正在尝试用 PHP 创建一个类似 CMS 的系统 使其尽可能模块化和可扩展 有人可以为我提供在 PHP 中创建事件侦听器系统 例如 Drupal 系统的非常简化版本 的最佳实践方案 创建挂钩并在一个简短的示例中实现它们也很好 嗯 从实现的
  • Laravel Eloquent Join 与 Inner Join?

    所以我在弄清楚如何进行 feed 风格的 mysql 调用时遇到了一些麻烦 我不知道这是一个雄辩的问题还是 mysql 的问题 我确信两者都是可能的 我只是需要一些帮助 所以我有一个用户 他们进入他们的提要页面 在此页面上显示来自他们朋友的
  • 选择所有 li,但不选择子项

    我有这个代码 li li this 这是选择所有的li在我的代码中 这很好用 但我想要 li排除li位于子菜单中 ul li a href blah 1 a li ul li a href sub 1 a li li a href sub
  • Ant复制过程中如何删除一个文件夹

    我有一个文件 其文件路径类似于 LibraryX A Stuff FileY txt 我在 Ant 构建中将其用作包含文件 但是 我需要在复制过程中删除路径的 LibraryX A 部分 文件从 LibraryX A Stuff FileY
  • Knex/SQL:将一对多联接合并到一个对象中

    我有两个表 page 和 page css 我想要page和page css之间是一对多的关系 一个页面包含多个page css 参见表结构 Page table structure Page css table structure 这是我
  • 如何将 csv 文件的内容读入类中,并将每个 csv 行作为类实例

    我是一名 Python 新手 几天来我一直在为课堂作业而苦苦挣扎 我有一个 csv 文件 其中包含这样的数据 id latitude longitude city label yr1970 yr1975 yr1980 yr1985 yr19