Python3 создает строку в двойных кавычках в выводе CSV - PullRequest
0 голосов
/ 18 октября 2019

Я использую Python3 для доступа к EST / API, который выдает вывод json. Я должен собрать некоторые данные из вызова API и создать простой файл .csv для использования другим процессом. CSV-файл не должен содержать никаких строк кавычек.

Требуемый вывод csv представляет собой строки, подобные этой (в основном имя устройства, IP-адрес и номер билета):

devicename.domain, 1.1.1.1, ticket_number

Однако я получаю это в своем CSV-файле:

"devicename.domain, 1.1.1.1, ticket_number"

Я считаю, что двойные кавычкиисходя из способа, которым я генерирую свой элемент списка, но я не могу избавиться от них ни в конструкции списка, ни в выводе csv. Я пробовал различные 'quoting = csv.QUOTE_NONE', но я не могу избавиться от кавычек в выходном файле CSV. Я уверен, что проблема в том, как я форматирую список, но я бью стену.

Вот мой код:

csv_rows = []
    domain="mydomain.com"
    ticket="ticket"

    # create a nested list element that contains the data scraped from json
    for switch in switches:
        switchname = switch["switch-name"]
        switchip = switch["ip"]
        csv_rows.append([f"{switchname}.{domain},{switchip},{ticket}"])
filename = f"{ticket}.csv"

with open(filename, 'w') as csvfile:
# creating a csv writer object
csvwriter = csv.writer(csvfile)
# writing the data rows
csvwriter.writerows(csv_rows)

1 Ответ

0 голосов
/ 18 октября 2019

Цитаты добавляются автором CSV, потому что он думает, что вы хотите, чтобы все эти вещи были в одном столбце, поэтому он окружает всю строку кавычками, чтобы избежать запятых, которые вы вставили.

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

csv_rows.append([f"{switchname}.{domain}",switchip,ticket])
...