【问题标题】:List into csv and csv into list将列表放入 csv 并将 csv 放入列表
【发布时间】:2021-07-02 05:17:29
【问题描述】:

我有这个清单:

[Header, 132, mail@wurst, [adasdsd, 1, 3, 4], [sdsdsd, 12, 3, 4], [sdsds, 3, 3]]

并希望将其保存为 csv 文件并在通过 ftp 传输后将其导入为同一列表。 我要:

[Header, 132, mail@wurst, [adasdsd, 1, 3, 4], [sdsdsd, 12, 3, 4], [sdsds, 3, 3]]

但我无法在导入列表后找到具有相同列表结构的方法。 我使用stackoverflow的任何解决方案总是在导入后更改列表的结构。

没有解决方案:

  • 熊猫
  • 麻木
  • 列表更改

仅使用任一解决方案:

  • 没有导入
  • csv 写入器

【问题讨论】:

  • 有什么理由专门使用 csv 作为格式吗?使用 pickle 或 json 将携带类型信息,使这种方式更容易
  • 感谢您的建议。 CSV 目前不可协商。
  • 你能不能把你想要的输出显示为 csv
  • 我想以一种方式读取 csv 文件,我的列表与我写入的完全相同。
  • 您希望子列表中的第一个组不是,而是子列表中的所有后续组?

标签: python-3.x list csv


【解决方案1】:

如果您知道标头长度(在这种情况下为 3),您可以将其硬编码。否则您将不得不做一些非常俗气的事情,或者像处理其他所有记录一样处理标头。

from __future__ import print_function
import csv
listing = [
        'Header', 132, 'mail@wurst',
        ['adasdsd', 1, 3, 4],
        ['sdsdsd', 12, 3, 4],
        ['sdsds', 3, 3]
]
with open('listing.csv', 'w') as outfile:
    csvout = csv.writer(outfile)
    csvout.writerow(listing[:3])
    csvout.writerows(listing[3:])
with open('listing.csv') as infile:
    csvin = csv.reader(infile)
    header = next(csvin)
    listing = [row for row in csvin]
    print(header + listing)

[稍后添加...] 当然,如果 CSV 文件已经存在,则无需进行硬编码。首先读取文件,您已经将标题与其余部分分开了。

【讨论】:

  • 您的解决方案对我有用。因为它不是我所要求的,也许其他人也有同样的问题试着做。因为这对我来说很好,所以我会接受你的回答作为解决方案。感谢您的帮助
  • next(iterable) 隐含地获取迭代的下一个元素并将指针前进到下一个元素。 [row for row in csvin] 是一个“列表理解”,它列出了电子表格剩余行的列表。 这样做的一个重要原因是,它不必要地复杂。一个 csv 文件可以轻松地映射到列表列表,然后再返回,并且必须有一个非常好的理由希望对标头进行特殊处理。很高兴为您提供帮助,感谢您接受我的回答。
猜你喜欢
  • 1970-01-01
  • 2013-01-14
  • 2021-08-31
  • 1970-01-01
  • 1970-01-01
  • 2017-12-13
  • 2021-01-01
  • 1970-01-01
相关资源
最近更新 更多