Как сохранить файлы в CSV через Python с сохранением десятичного разделителя в одном месте? (И различия в Excel и Google Sheets) - PullRequest
0 голосов
/ 14 марта 2019

У меня есть скрипт, который делает запрос через API и сохраняет данные в файл CSV. Данные хранятся в разных списках в Python и должны быть в разных столбцах в CSV. Данные из этих списков являются Unicode (и я пытался преобразовать их в строку и с плавающей точкой, прежде чем конвертировать в .csv, но не сработал). Если я распечатаю результаты, они появятся на экране (которые являются правильными значениями):

01/02/2019 01:00:00 -  568.5200 -  608.7472 -  654.1030

Если я открою файл .csv в Excel, значения будут иметь десятичный разделитель, расположенный в неправильных местах. Как это:

01/02/2019 01:00    5.685.200   6.087.472   6.541.030

Если я открою файл .csv с помощью Google Sheets, значения не будут разделены в столбцах, но верны. Как это:

01/02/2019 01:00:00;568.5200;608.7472;654.1030

Я использую izip и writer.writerows для преобразования списков в .csv в разных столбцах:

import csv
from itertools import izip

#A lot of code

with open('Latency.csv', 'wb') as csvfile:
    writer = csv.writer(csvfile, delimiter = ';')
    writer.writerows(izip(dates, values_min, values_avg, values_max))

1 Ответ

0 голосов
/ 15 марта 2019

Я только что заменил '.' на ',':

def format(numbers):
    for number in numbers:
         yield str(number).replace(".", ",")

with open('Latency.csv', 'wb') as csvfile:
    writer = csv.writer(csvfile, delimiter = ';')
    writer.writerows(izip(datas, format(values_min), format(values_avg), format(values_max)))
...