【问题标题】:adding extra row to text file in python在python中向文本文件添加额外的行
【发布时间】:2021-05-06 02:07:24
【问题描述】:

我有一个类似的代码:

x = zip(sources,clist,RMSlist,residuelist)
name1 = string("sources")
name2 = string("clist")
name3 = string("RMSlist")
name4 = string("residuelist")
y = zip(name1,name2,name3,name4)
with open('test.csv', 'w') as f:
  writer = csv.writer(f, delimiter='\t')
  writer.writerows(y) 
  writer.writerows(x)   

我的目标是将每个数组写在一列中,但我希望在该列上方为其定义(名称)。这是我对定义的 4 个名称的尝试。

只是为了更好地理解文本文件输出

【问题讨论】:

  • writer.writerow(["sources", "clist", "RMSlist", "residuelist"])
  • 如果您将名称保留为列表all_names = ["sources", "clist", "RMSlist", "residuelist"] 会更简单,然后您可以使用for-loop 创建带有string(name)writer.writerow[all_names] 的新列表
  • 你想用writerows(x) 保存什么?如果这是名称/定义,那么您应该在writerows(y) 之前将其写在顶部。
  • 现在当我循环你的代码时,我认为你所有的问题都是因为你使用zip() - 你必须创建普通列表y = ["sources", "clist", "RMSlist", "residuelist"]而不使用zip()并写它writerow(y)而不使用char s in word writerow

标签: python arrays string csv zip


【解决方案1】:

我认为您的问题是因为您在末尾使用了 zip()writerows 和 char s

您应该创建带有名称的普通列表

names = ["sources", "clist", "RMSlist", "residuelist"]

并使用writerow(末尾不带字符s)写入单行

writer.writerow(names)  # without char `s`

顺便说一句:您可以使用名称 header 代替名称 names(可能表示多个对象),这表示单个对象。


header = ["sources", "clist", "RMSlist", "residuelist"]

rows = zip(sources, clist, RMSlist, residuelist)

with open('test.csv', 'w') as f:
  writer = csv.writer(f, delimiter='\t')
  writer.writerow(header)  # without char `s` to write one row
  writer.writerows(rows)   # with char `s` to write many rows

【讨论】:

  • 感谢帮助,没注意最后的s!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-05
  • 1970-01-01
相关资源
最近更新 更多