【问题标题】:Save copy of row in csv file在 csv 文件中保存行的副本
【发布时间】:2023-04-03 01:14:02
【问题描述】:

我正在阅读一个 CSV 文件。当我遍历行时​​,我正在更改一些数据,如果它不是有效的格式。我想报告哪些行发生了变化。与其检查每个项目,不如在需要的地方进行更改,然后将初始行与最后一行进行比较以查看是否进行了任何更改,这样会更快。

for row in csv_reader:
    tempROW = row
    # make changes to row e.g.
    row["Surname"] = row["Surname"].title()
    # lots more ...  
    if tempROW == row:
      print("No changes to row",row)
    else:
      print("File changed", row)

问题是没有检测到变化,因为tempROW 变量指向相同的数据。

我尝试过.copy(),但这不起作用。 帮助表示赞赏。

【问题讨论】:

  • 您似乎使用的是 Python,但目前尚不清楚是哪个版本。您能否更新您的帖子,以更清楚地说明问题所在以及您说“不起作用”时的意思。
  • 我使用的是 Python 3.7.0

标签: python python-3.x csv dictionary copy


【解决方案1】:

你可以使用copy.deepcopy:

import copy

for row in csv_reader:
    tempROW = copy.deepcopy(row)

如果您使用dict.copy,您将只有tempROW dict 的浅表副本

【讨论】:

  • 非常感谢。不确定是使用 deepcopy 还是只是复制。两者似乎都有效。
猜你喜欢
  • 1970-01-01
  • 2018-07-02
  • 1970-01-01
  • 2015-07-16
  • 1970-01-01
  • 1970-01-01
  • 2021-08-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多