使用 dictwriter 覆盖同一 csv 文件中的行

2023-12-12

我有名字.csv

first_name,last_name
Baked,Beans
Lovely,Spam
John,Bang
Harry,Potter

我想在同一文件中将“John Ban”重命名为“jason statham”。 我尝试使用 file.seek() 但失败

import csv
with open('/home/tiwari/Desktop/names.csv', 'rw+') as csvfile:
    fieldnames = ['first_name', 'last_name']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    reader = csv.DictReader(csvfile)
    for line, row in enumerate(reader):
        rs = sys.getsizeof(row)
        if row['first_name'] == 'John':
            csvfile.seek(-rs)
            writer.writerow({'first_name': 'Jason', 'last_name': 'statham'})

除非替换字符串与原始字符串的长度完全相同,否则您的方法将不起作用。

我建议读取所有行,替换它们,然后写回。

import csv

with open('/home/tiwari/Desktop/names.csv', 'r+') as csvfile:
    reader = csv.DictReader(csvfile)

    rows = []
    for row in reader:
        if row['first_name'] == 'John':
            row['first_name'] = 'Jason'
            row['last_name'] = 'Statham'
        rows.append(row)

    csvfile.seek(0)  # back to begining of the file.
    fieldnames = ['first_name', 'last_name']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()
    writer.writerows(rows)
    csvfile.truncate()  # In case of updated content is shorter.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 dictwriter 覆盖同一 csv 文件中的行 的相关文章

随机推荐

  • JSP - 在 JSP 页面之间传递参数

    如何使用纯 Java 代码在 JSP 页面之间传递参数 IE 我不想使用如下代码
  • 如何在Polars中按数据类型选择列?

    在 pandas 中我们有pandas DataFrame select dtypes根据选择某些列的方法dtype 在 Polars 中是否有类似的方法来做这样的事情 可以将数据类型传递给pl col import polars as p
  • 如何多行匹配两个字符串之间的所有文本

    我正在努力完成与所见相同的事情here 即假设您有如下文本 p something p p class sdf some text p p some other text p p The end p 匹配的正则表达式是什么 p class
  • 如何将 NodeJS 与 Angular 连接(在 Nginx 中)

    我有一个带有 Angular 和 NodeJS 的存储库 我在詹金斯中表现 install globally npm install g bower npm install g gulp install bower install npm
  • 如何在 VB 6 中获取当前 CPU 和 RAM 使用情况?

    如何获取VB 6代码中的CPU和内存使用情况 谢谢 确定当前机器上的CPU使用率
  • 从文本文件读取数据并创建对象

    我需要一些帮助 我正在 Java 上进行超市模拟 但我遇到了一个问题 我有一个文本文件 Stock txt 其中包含超市的所有库存 例如 0 面包店 巧克力蛋糕 12 5 250 1 肉 优质牛排 2 6 120 2 海鲜 金枪鱼 1 2
  • Java两次之间的差异[重复]

    这个问题在这里已经有答案了 可能的重复 计算两个 Java 日期实例之间的差异 时间 1 17 05 时间 2 17 08 我想在几秒钟内得到差异 long diffInMillis newerDate getTime olderDate
  • 在 Pig 中提取 CSV 文件的第一行

    我有几个 CSV 文件 标题始终是文件中的第一行 在 Pig 中将该行作为字符串从 CSV 文件中取出的最佳方法是什么 不能使用 sed awk 等进行预处理 我尝试使用常规 PigStorage 和 Piggybank CsvLoader
  • JavaScript |运算符[重复]

    这个问题在这里已经有答案了 谁能解释一下什么是 和之后的值呢 我知道 0 的输出会创建 13 个集合 即数字 3 2 1 0 但是 呢 1 或 2 var i 52 while i alert i 13 0 它是按位或运算符 有解释和例子在
  • 如何将 java 代码嵌入到批处理脚本中?是否可以创建 .java/.bat 混合文件?

    虽然有一些技术可以让您创建perfect 并非如此perfect 批处理文件与一些 本机 Windows 脚本语言的混合体 完美 的混合体应该是什么样子 嵌入的代码必须可以按原样使用 并且您应该有能力 将其复制粘贴到您想要的任何其他编辑器
  • 虚拟基类的创建顺序

    我有以下问题 struct A1 A1 std cout lt lt A1 struct A2 A2 std cout lt lt A2 struct AA1 virtual A1 A2 AA1 std cout lt lt AA1 str
  • 使用 Cobertura 从代码覆盖率中排除方法

    有没有办法将代码排除在 Cobertura 覆盖率报告之外 我们有一些方法不应包含在覆盖率报告中 因此不会降低覆盖率数字 我知道Clover有这样的功能 但我还没有找到Cobertura的类似功能 您可以从检测中排除类 那么它们就不应该出现
  • 如何在ListView上长按时传递变量?

    我会有列表视图和里面的很多项目 我希望用户可以长按项目并将其设置为收藏夹 为此 我需要长按此菜单获取数据库 ID 我有以下代码 Override public void onCreateContextMenu ContextMenu men
  • Spring批处理:输入资源不存在类路径资源

    我目前正在开发一个 Spring Batch 它首先将 Excel xsls 文件转换为 CSV 然后读取 CSV 处理它并将其数据存储在数据库中 第一步效果很好 批次在第二步停止并抛出此警告 Input resource does not
  • Google Play 游戏实时多人游戏:获取参与者 ID 并将其存储到字符串中

    我正在我的统一游戏中第一次尝试谷歌实时多人游戏 QuickMatch工作得很好 我的意思是我能够获取连接的参与者的 ID 并将其存储到一个字符串中 使用 string MyId PlayGamesPlatform Instance Real
  • 是否可以比较 SQL Server 中相似数据的行

    是否可以在 SQL Server 中比较类似数据的行 我的表中有一个公司名称列 其中公司名称可能有些相似 以下是代表相同 4 个公司的 8 个不同值的示例 ANDORRA WOODS ANDORRA WOODS HEALTHCARE CEN
  • Lua和javascript可以连接吗?

    我不确定这个问题是否恰当 因为英语不是我的母语 lua 和 javascript 可以连接在一起吗 我还没有找到任何相关信息 或者是否有可能 例如在 html 文件中使用两种语言编写脚本 例如 也许可以在这些语言之间共享信息 或者是否可以在
  • 如何在 Java 中合并 CSV 文件

    我的第一个 CSV 文件看起来像这样 包含标题 标题仅包含在顶部 而不包含在每个条目之后 NAME SURNAME AGE Fred Krueger Unknown n records 我的第二个文件可能如下所示 NAME MIDDLENA
  • JavaScript 正则表达式电子邮件验证[重复]

    这个问题在这里已经有答案了 此代码始终会发出警报 null 这意味着字符串与表达式不匹配 var pattern w a zA Z a zA Z 2 3 function isEmailAddress str str email prote
  • 使用 dictwriter 覆盖同一 csv 文件中的行

    我有名字 csv first name last name Baked Beans Lovely Spam John Bang Harry Potter 我想在同一文件中将 John Ban 重命名为 jason statham 我尝试使用