在 CSV python 中添加列并枚举它

2023-11-24

我的 CSV 看起来像

John,Bomb,Dawn
3,4,5
3,4,5
3,4,5

我想在前面添加 ID 列,如下所示:

ID,John,Bomb,Dawn
1,3,4,5
2,3,4,5
3,3,4,5

使用枚举函数,但我不知道如何。到目前为止,这是我的代码:

import csv

with open("testi.csv", 'rb') as input, open('temp.csv', 'wb') as output:
        reader = csv.reader(input, delimiter = ',')
        writer = csv.writer(output, delimiter = ',')

        all = []
        row = next(reader)
        row.append('ID')
        all.append(row)
        count = 0
        for row in reader:
                count += 1
                while count:
                        all.append(row)
                        row.append(enumerate(reader, 1))
                        break
        writer.writerows(all)

输出全部错误:

John,Bomb,Dawn,ID
3,4,5,<enumerate object at 0x7fb2a5728d70>
3,4,5,<enumerate object at 0x1764370>
3,4,5,<enumerate object at 0x17643c0>

所以 ID 出现在最后,而它应该出现在开头,而且它甚至没有执行 1、2、3。出现一些奇怪的错误。


我可以建议下面的代码来解决您的问题:

import csv

with open("testi.csv", 'rb') as input, open('temp.csv', 'wb') as output:
    reader = csv.reader(input, delimiter = ',')
    writer = csv.writer(output, delimiter = ',')

    all = []
    row = next(reader)
    row.insert(0, 'ID')
    all.append(row)
    for k, row in enumerate(reader):
        all.append([str(k+1)] + row)
    writer.writerows(all)

更紧凑的代码可以是:

all = [['ID'] + next(reader)] + [[str(k+1)] + row for k, row in enumerate(reader)]

UPDATE(一些解释):

你有错enumerate功能理解。enumerate应该用在for循环并且当你迭代时enumerate函数结果你得到元组的序列,其中第一个项目是列表中项目的有序数,第二个是项目本身。

But enumerate函数返回对象(docs)所以当你尝试将其转换为字符串时,它会调用__repr__魔术方法并将枚举对象转换为<enumerate object at ...>.

另外一句话,enumerate有助于避免循环中的额外计数器,例如您的count += 1多变的。

另外你这里有一个非常奇怪的代码:

while count:
    all.append(row)
    row.append(enumerate(reader, 1))
    break

这部分代码永远不能执行多次。

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

在 CSV python 中添加列并枚举它 的相关文章

随机推荐

  • 如何将枚举数组序列化为 Json 字符串数组? [复制]

    这个问题在这里已经有答案了 根据迭戈在这个问题中得票最高的答案下未答复的评论 枚举的 JSON 序列化为字符串 所以对于一个枚举 public enum ContactType Phone 0 Email 1 Mobile 2 例如 一个属
  • gnuplot:应用数据文件中的颜色名称

    如何从数据文件中获取颜色名称 我没想到这会如此困难 但显然确实如此 为什么版本 1 和版本 2 给出错误的颜色 有没有像版本 3 那样不使用数组的更简单的方法来获得正确的颜色 和 lc var仅适用于索引值 不适用于颜色名称 colorna
  • 下载大尺寸json时如何解决Uncaught RangeError

    我正在尝试下载大型 json 数据 但这导致Uncaught RangeError Invalid string length 请帮忙解决这个问题 提前致谢 这是 Jsfiddle http jsfiddle net sLq3F 456 您
  • 在 Weblogic 12.1.3 上找不到文件 Metro-default.xml

    我们当前在 WebLogic 12 1 2 上运行 在这个环境中我们的应用程序运行良好 我们现在想要的是将我们的应用程序与 WebLogic 12 1 3 环境进行认证 但我们所使用的 Web 服务面临着一个问题 在新版本中 服务器抛出异常
  • 使用给定的概率密度函数生成随机数

    我想指定概率密度函数的分布 然后在 Python 中从该分布中选取 N 个随机数 我该如何去做呢 一般来说 您需要逆累积概率密度函数 一旦你有了这个 那么沿着分布生成随机数就很简单了 import random def sample n r
  • “inline-style”-内容安全策略和 Javascript 错误

    我在 Apache2 配置中使用以下命令在服务器上打开了内容安全策略 Header set Content Security Policy Report Only default src self 我将其设置为 Report Only仅报告
  • 错误,无法设置范围类的 FormulaArray 属性

    我创建了以下公式 IFNA LOOKUP 10 99 MID O2 MIN IF ISNUMBER MID O2 ROW 1 25 1 0 ISNUMBER MID O2 ROW 2 26 1 ROW 2 26 ROW 1 25 SUMPR
  • 如何作为脉冲应用程序在表格之间复制单元格

    我需要复制单元格2 个表视图之间 我有一个或多或少可行的解决方案 然而 这并不顺利 我很想做类似的事情脉冲应用程序重新排序 Feed 选项 脉冲工作方式的特殊之处在于 重新排序动画与正常的单元格重新排序相同 但单元格仍然可以在表之间移动 这
  • 如何模拟 httpcontext 使其在单元测试中不为 null?

    我正在编写一个单元测试 控制器方法抛出异常 因为 HttpContext ControllerContext 为 null 我不需要断言 HttpContext 中的任何内容 只需要它不为 NULL 即可 我做了研究 我相信最小起订量就是答
  • 如何在 Rails 测试中将 autotest 和 spork 结合起来?

    自动测试通过仅运行更改的测试来提高测试运行的速度 但我想通过使用 spork 预加载 Rails 环境来进一步推动它 这样我就能获得更快的反馈 这可能吗 自动测试 https github com grosser autotest Spor
  • D3圆弧渐变[关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我正在尝试使用 d3 创建一个计时器 它的梯度会在 0 到 100 之间变化 例如 深橙色为 0 浅橙色为 100 我可以在深橙色和浅橙色之间进行弧线过渡 但在找到任何允许我对弧线应
  • 如何在MonoDevelop中进入框架源代码

    在 MonoDevelop 中调试项目时 如何进入 Mono Framework 源代码 我正在运行 openSUSE 11 3 中的普通 MonoDevelop 这是一篇旧帖子 但我今天偶然发现它寻找答案 所以希望它对其他人有帮助 除非您
  • 为什么 ***NO_CI*** 仍然导致持续集成构建?

    我最近发现了 TFS 的 隐藏功能 如果您的评论包含以下内容 它允许您阻止 CI 构建启动 NO CI 我在家里运行了 TFS 这个小技巧很有用 在工作中 我们还使用 TFS 2010 我发现这仍然不能阻止 CI 构建在我们的设置中启动 我
  • angularJS 发送 OPTIONS 而不是 POST

    我被困在这两天我找不到解决方案 当我执行 AngularJS POST 时 它会在标头中发送选项并从 API 返回错误 代码看起来没什么特别的 http defaults headers post Content Type applicat
  • 使用 require.js 和 Java/Rhino 解析模块

    我试图让 require js 使用 Java 6 和 Rhino 在服务器端加载模块 我能够很好地加载 require js 本身 犀牛可以看到require 功能 我可以看出 因为 Rhino 抱怨当我更改时它找不到该功能require
  • 将功能 pandas.series 中的 -inf 值替换为 np.nan [重复]

    这个问题在这里已经有答案了 我想将 pandas series 功能 我的数据帧的列 中的 inf 值替换为 np nan 但我无法做到 我努力了 df feature df feature replace np infty np nan
  • gcloud ml-engine 对大文件返回错误

    我有一个训练有素的模型 它接受较大的输入 我通常将其作为形状 1 473 473 3 的 numpy 数组来执行 当我将其放入 JSON 时 我最终得到了大约 9 2MB 的文件 即使我将其转换为 JSON 文件的 Base64 编码 输入
  • SBT Scala 跨版本,具有聚合和依赖关系

    我正在努力解决如何crossScalaVersions与子项目一起工作 我有一个使用 2 10 foo 编译的项目和一个使用 2 11 bar 编译的项目 他们共享一个交叉编译的项目 常见 如何编译项目 foo 和 bar 构建 sbt l
  • 使用 Kotlin 协程处理阻塞代码的正确方法

    假设我由于某些第三方库而具有阻塞功能 沿着这些思路 fun useTheLibrary arg String String val result BlockingLibrary doSomething arg return result 调
  • 在 CSV python 中添加列并枚举它

    我的 CSV 看起来像 John Bomb Dawn 3 4 5 3 4 5 3 4 5 我想在前面添加 ID 列 如下所示 ID John Bomb Dawn 1 3 4 5 2 3 4 5 3 3 4 5 使用枚举函数 但我不知道如何