【问题标题】:Can you use csv.DictReader without a file?你可以在没有文件的情况下使用 csv.DictReader 吗?
【发布时间】:2013-12-02 11:55:08
【问题描述】:

我有一些逗号分隔的输入要解析成字典,所以csv.DictReader 似乎很合适。但是,输入已经是字符串形式,而不是 csv.DictReader 想要的接口的文件。

有没有办法直接将csv.DictReader 与字符串一起使用?

【问题讨论】:

    标签: python python-2.7 csv


    【解决方案1】:

    您可以使用任何可迭代的生产线,它不仅是文件对象。您可以使用str.splitlines() 将字符串拆分为行列表:

    for row in csv.DictReader(inputtext.splitlines()):
        print row
    

    演示:

    >>> import csv
    >>> demostring = '''\
    ... foo,bar,baz
    ... 42,Monty,Python
    ... 38,Ham,Spam
    ... '''
    >>> for row in csv.DictReader(demostring.splitlines()):
    ...     print row
    ... 
    {'foo': '42', 'baz': 'Python', 'bar': 'Monty'}
    {'foo': '38', 'baz': 'Spam', 'bar': 'Ham'}
    

    【讨论】:

      【解决方案2】:

      您可以使用StringIO(或io.BytesIO/io.StringIO):

      >>> import StringIO
      >>> import csv
      >>>
      >>> f = StringIO.StringIO(u'''field1,field2,field3
      ... 1,2,3
      ... 4,5,6
      ... 7,8,9
      ... ''')
      >>>
      >>> for row in csv.DictReader(f):
      ...     print row
      ...
      {'field2': '2', 'field3': '3', 'field1': '1'}
      {'field2': '5', 'field3': '6', 'field1': '4'}
      {'field2': '8', 'field3': '9', 'field1': '7'}
      

      【讨论】:

        猜你喜欢
        • 2012-02-08
        • 2020-09-29
        • 2020-09-06
        • 2021-01-22
        • 1970-01-01
        • 2011-12-15
        • 2021-11-04
        • 1970-01-01
        • 2012-03-21
        相关资源
        最近更新 更多