【问题标题】:python csv question [duplicate]python csv问题[重复]
【发布时间】:2010-11-08 04:12:44
【问题描述】:

我只是在 python 中测试 csv 组件,我遇到了一些问题。

我有一个相当标准的 csv 字符串,默认选项似乎都适合我的测试,但结果不应连续分组 1、2、3、4 和 5、6、7、8行?

非常感谢您提供的任何启发!

Python 2.6.2(r262:71600,2009 年 4 月 16 日,09:17:39) [GCC 4.0.1 (Apple Computer, Inc. build 5250)] 在 darwin 上 输入“帮助”、“版权”、“信用”或“许可”以获取更多信息。 >>> 导入 csv >>> c = "1, 2, 3, 4\n 5, 6, 7, 8\n" >>> 测试 = csv.reader(c) >>> 测试中的 t: ... 打印 t ... ['1'] ['', ''] [''] ['2'] ['', ''] [''] ['3'] ['', ''] [''] ['4'] [] [''] ['5'] ['', ''] [''] ['6'] ['', ''] [''] ['7'] ['', ''] [''] ['8'] [] >>>

【问题讨论】:

  • 请注意,我关闭了这个而不是较新的,因为另一个答案在这里很有用,但反过来就没有那么多了。这仍然获得了独创性的徽章。

标签: python csv


【解决方案1】:

test = csv.reader(c.split('\n'))

【讨论】:

    【解决方案2】:

    csv.reader 需要一个可迭代的。你给了它"1, 2, 3, 4\n 5, 6, 7, 8\n";迭代产生字符。尝试给它 ["1, 2, 3, 4\n", "5, 6, 7, 8\n"] -- 迭代会产生线条。

    【讨论】:

      【解决方案3】:

      csv.reader 采用可迭代或迭代器返回行,请参阅the docs。您正在向它传递一个字符串,它是一个可迭代的返回单个字符。

      所以,请使用csv.reader(c.splitlines()) 或类似的构造!

      【讨论】:

        【解决方案4】:

        要让它更像文件,试试这个。

        import StringIO
        c= StringIO.StringIO( "1, 2, 3, 4\n 5, 6, 7, 8\n" )
        

        现在 c 看起来像一个文件。文件是您在大多数情况下(如果不是全部)与 csv 一起使用的文件。

        【讨论】:

          猜你喜欢
          • 2020-04-09
          • 1970-01-01
          • 1970-01-01
          • 2013-02-02
          • 1970-01-01
          • 2011-07-27
          • 1970-01-01
          • 1970-01-01
          • 2019-04-15
          相关资源
          最近更新 更多