Why is the Python CSV reader ignoring double-quoted fields?

前端 未结 2 751
说谎
说谎 2020-12-06 01:01

I think this is probably something simple, but after an hour of searching, I\'ve had no luck figuring out what I\'m doing wrong.

I\'m using the following code to rea

相关标签:
2条回答
  • 2020-12-06 01:24

    If you look at the dialect that you're using, you'll notice that the excel dialect is configured as follows:

    class excel(Dialect):
        """Describe the usual properties of Excel-generated CSV files."""
        delimiter = ','
        quotechar = '"'
        doublequote = True
        skipinitialspace = False
        lineterminator = '\r\n'
        quoting = QUOTE_MINIMAL
    

    Notice that skipinitialspace is set to False. Just pass that into your reader. Oh and by the way, all the fields you've passed in are already the defaults when using the excel dialect, which is the default dialect parameter passed to csv.reader

    So, I would re-write your code like so:

    >>> with open(inPath) as fp:
    >>>     reader = csv.reader(fp, skipinitialspace=True)
    >>>     for row in reader:
    >>>         print row,
    >>>         print len(row)
    ['hello', 'this is row 1', 'foo1'] 3
    ['hello', 'this is row 2', 'foo2'] 3
    ['goodbye', 'this, is row 3', 'foo3'] 3
    
    0 讨论(0)
  • 2020-12-06 01:36

    It's because your csv has spaces before the quotes:

    one0, one1, one2
    two0, two1, two2
    tre0, "tr,e1", tre2
    

    vs

    one0,one1,one2
    two0,two1,two2
    tre0,"tr,e1",tre2
    

    You'll need to remove those extra spaces first.

    0 讨论(0)
提交回复
热议问题