【问题标题】:Writing to a certain CSV row/column, using header names使用标题名称写入某个 CSV 行/列
【发布时间】:2014-01-15 14:34:14
【问题描述】:

我有一堆 CSV 文件,我想将它们转换为单个 CSV 文件,其中每一行代表一个原始 CSV 文件。我正在使用 CSV 包,并且我已经弄清楚如何从原始 CSV 文件中读取条目。我还有一个仅包含一行的模板 CSV 文件,即我要创建的单个 CSV 的标题(包含列名称,例如“价格”、“日期”和“数量”)。

with open ('TemplateFile.csv', 'w') as TemplateFile: 
    TemplateFileWriter = csv.writer(TemplateFile, delimiter=';') 
    # I already have references to all the files I want to access in the variable fileList
    for f in fileList:              
        with open(f, 'r') as InputFile:             
            InputFileReader = list(csv.reader(InputFile, delimiter=';'))                        
            # This is where I store the 'Price' variable.           
            tmp = InputFileReader[3][3]

现在,我想做的是有一种方便的方法将tmp 存储在TemplateFile 的某一行中,与“价格”恰好位于同一列。我一直在阅读 CSV 包以及writeDictWrite,但我发现文档无法遵循。

最后一行我想要的最终是这样的:

TemplateFileWriter[myPrefferedRow]['Price'] = tmp

我是想在这里实现一些不可能的事情,还是这可能与 CSV 包有关?

【问题讨论】:

  • “存储 tmp”是什么意思?
  • @JoelCornett 抱歉,我在没有更新所有内容的情况下对我的帖子进行了更改。我指的是第一个代码块的最后一个变量,它现在在那里:)
  • 啊。你能提供示例输入和输出吗?只需 5-10 行 CSV 就足够了。

标签: python csv


【解决方案1】:

csv.readercsv.writer 仅读取和写入行,因此就像您使用 list(csv.reader(...)) 读取行并将它们放入列表列表一样,您可以为输出创建列表列表(或字典) ,根据需要修改条目,然后使用TemplateFileWriter.writerows()将其输出到文件中。

【讨论】:

    【解决方案2】:

    numpy 包有一个 loadtxt 函数,可以做你想做的事...

    import numpy as np
    def foo(fname):    
        yourdata = np.loadtxt(fname, delimiter=';')
        return yourdata[3,3] 
    

    【讨论】:

    • 这似乎完全符合我的代码中的InputFileReader[3][3] 行,还是我在这里遗漏了什么?
    • 我没有使用 cvs 阅读器的经验,但是该函数应该为您提供 ASCII 文件中第三行的第三个元素。标有“#”的标头会被自动忽略。
    猜你喜欢
    • 2019-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-15
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    相关资源
    最近更新 更多