【问题标题】:Building on "How to read and write a table / matrix to file with python?"基于“如何使用 python 读取和写入表/矩阵到文件?”
【发布时间】:2014-02-12 19:25:23
【问题描述】:

早在 2013 年 2 月 8 日 20:20,YamSMit 提出了一个问题(参见:How to read and write a table / matrix to file with python?),类似于我正在努力解决的问题:从具有 3 列和不同数字的 Excel 表 (CSV) 开始的行。列的内容是字符串、浮点数和字符串。第一个字符串的长度会有所不同,而另一个字符串可以是固定的(例如,2 个字符)。该表需要进入一个二维数组,以便我可以对数据进行操作以生成最终文件(这将是一个文本文件)。我已经尝试过 stackoverflow 中提出的各种策略,但我总是遗漏一些东西,而且我还没有看到所有部分的示例,这就是努力弄清楚这一点的原因。

示例数据将类似于: 雷·史密斯,41645.87778,V1

我已经阅读并探索了 numpy 和 astropy,因为可用的文档说它们使这种类型的代码变得简单。我试过导入 csv。不知何故,代码没有放在一起。我应该补充一点,我是用 Python 3.2.3 编写的(这似乎是一个错误,因为很多文档都是针对 Python 2.x 的)。

我意识到这个问题的基本性质引导我阅读更多教程。我已经阅读了很多,但教程总是提到足够多的不同之处,以至于我无法组装正确的部分:读取表格文件,写入二维数组,然后......做更多的事情。

感谢任何可能为我提供可行的代码大纲,或指出我应该阅读的特定文档以处理我正在尝试编写的代码的特定性质的人。

提前非常感谢。 (抱歉冗长 - 只是想完整。)

【问题讨论】:

    标签: python csv multidimensional-array python-3.2


    【解决方案1】:

    我对 2.x 比较熟悉,但是从 3.3 csv 文档found here 来看,它似乎与 2.x 大体相同。以下函数将读取 csv 文件,并返回文件中找到的行的二维数组。

    import csv
    def read_csv(file_name):
        array_2D = []
        with open(file_name, 'rb') as csvfile:
            read = csv.reader(csvfile, delimiter=';') #Assuming your csv file has been set up with the ';' delimiter - there are other options, for which you should see the first link.
            for row in read:
                array_2D.append(row)
        return array_2D
    

    然后您可以按如下方式操作数据(假设您的 csv 文件名为“foo.csv”,所需的文本文件为“foo.txt”):

    data = read_csv('foo.csv')
    with open('foo.txt') as textwrite:
        for row in data:
            string = '{0} has {1} apples in his Ford {2}.\n'.format(row[0], row[1], row[2])
            textwrite.write(string)
            #if you know the second column is a float:
            manipulate = float(row[1])*3
            textwrite.write(manipulate)
    

    字符串将被写入 'foo.txt' 为:

    Ray Smith has 41645.87778 apples in his Ford V1.\n
    

    并且 maniuplate 将被写入 'foo.txt' 为:

    124937.63334
    

    【讨论】:

    • 兔子们,非常感谢。我现在看到这是如何工作的。我遇到了一个错误,你在文本中写入变量操作,因为它需要一个字符串而不是浮点数。我通过将其转换为字符串来使其工作,只是为了查看文件是否可以正确写入。我从你的例子中学到了很多东西!
    • 没问题 - 如果你完成了,请考虑接受这个答案,这样人们就知道它已经解决了。干杯:)
    猜你喜欢
    • 1970-01-01
    • 2017-10-18
    • 2015-01-26
    • 2016-12-26
    • 2016-09-25
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    相关资源
    最近更新 更多