How to write output file in CSV format in python?

前端 未结 4 1905
忘了有多久
忘了有多久 2021-01-07 04:11

I tried to write output file as a CSV file but getting either an error or not the expected result. I am using Python 3.5.2 and 2.7 also.

Getting error in Python 3.5:

4条回答
  •  我在风中等你
    2021-01-07 04:42

    On Python 3, csv requires that you open the file in text mode, not binary mode. Drop the b from your file mode. You should really use newline='' too:

    resultFile = open("out.csv", "w", newline='')
    

    Better still, use the file object as a context manager to ensure it is closed automatically:

    with open("input_1.csv", "r") as f1, \
         open("out.csv", "w", newline='') as resultFile:
        wr = csv.writer(resultFile, dialect='excel')
        for var in f1:
            wr.writerow([var.rstrip('\n')])
    

    I've also stripped the lines from f1 (just to remove the newline) and put the line in a list; csv.writer.writerow wants a sequence with columns, not a single string.

    Quoting the csv.writer() documentation:

    If csvfile is a file object, it should be opened with newline='' [1]. [...] All other non-string data are stringified with str() before being written.

    [1] If newline='' is not specified, newlines embedded inside quoted fields will not be interpreted correctly, and on platforms that use \r\n linendings on write an extra \r will be added. It should always be safe to specify newline='', since the csv module does its own (universal) newline handling.

提交回复
热议问题