Режим 'rU' для StringIO (символ новой строки, видимый в поле без кавычек) - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь разобрать файлы gzip построчно:

with gzip.open(obj.get()['Body'])as f:

    for line in f:
        line=StringIO(line.decode("utf-8"))
        line=csv.reader(line,delimiter=',')

        for line1 in line:

         #some logic

Но для некоторых файлов у меня ошибка:

new-line character seen in unquoted field - do you need to open the file in universal-newline mode?

Когда я пытаюсь открыть в режиме newlline:

csv.reader(open(line, 'rU'), delimiter=',')

У меня есть:

expected str, bytes or os.PathLike object, not _io.StringIO

Я хочу, чтобы все поля, содержащие '\ r', находились в этом поле как часть строкового значения. Как это можно решить?

Ответы [ 2 ]

0 голосов
/ 10 апреля 2019

Согласно https://docs.python.org/3.7/library/io.html?highlight=io#io.StringIO, если вы передадите второй параметр как None, он должен распознавать все новые строки

0 голосов
/ 10 апреля 2019

Как-то так, что позволяет избежать использования модулей csv.reader и StringIO:

with gzip.open(obj.get()['Body'])as f:
    for line in f:
        line = line.strip()
        line = line.decode("utf-8").split(',')

        for line1 in line:
            #some logic
...