CSV-ридер, возвращающий три столбца в виде одной строки в Python - PullRequest
0 голосов
/ 07 декабря 2018

Я пытаюсь прочитать CSV-файл, который имеет данные ниже

"27@21","","2725 abc dr"","","Mumbai","IN",""

, используя приведенный ниже код

with open(file, "r") as csv_file:
    reader = csv.reader(csv_file, delimiter=',')
    for row in reader:
        colValues = list(row)
        print(colValues)

, он выдает вывод как

['27@21', '', '2725 abc dr",",Mumbai"', 'IN', '']

Если посмотреть на выделенный жирным шрифтом вывод, это комбинация из трех столбцов входных данных.

Я хочу, чтобы этот вывод был таким же, как заданный вход.

Примечание. Я создаю утилиту для обработки любого файла CSV с неожиданными специальными символами, такими как двойные кавычки в любом месте значения столбца, и создания нового файла с удалением таких символов.Для этого мне нужно решить эту проблему.

1 Ответ

0 голосов
/ 07 декабря 2018

Наконец, это решается добавлением еще одного параметра (quotechar) в методе чтения, как показано ниже:

reader = csv.reader(csv_file, delimiter=',', quotechar="'")

Input :  "27@21","","2725 abc dr"","","Mumbai","IN",""

Output : ['"27@21"', '""', '"2725 abc dr""', '""', '"Mumbai"', '"IN"', '""']

Это ожидаемый вывод, когда количество столбцов во входном CSV-файле совпадает с выходным списком.

...