Попытка записать число с плавающей точкой в ​​CSV, но оно становится целым числом - PullRequest
0 голосов
/ 21 июня 2019

Я использую Python 3 для создания CSV-файла с различными типами данных, одним из которых является float.Строки и целые числа правильно отображаются в сгенерированном файле, но число с плавающей запятой становится большим целым числом вместо сохранения десятичных дробей.Например, 64.5232323 становится 645.232.323.

Данные организованы в массив, и я использую модуль Python csv.Вот код для записи в файл:

    index_file_exists = os.path.isfile(full_dir+index_filename)
    with open(full_dir+index_filename, 'a+') as f:
        csv_file = csv.writer(f, delimiter=";")
        csv_file.writerow(index_line)

index_line - массив, содержащий все данные для этой строки.Я попытался преобразовать число с плавающей точкой в ​​форматированную строку, как в:

index_line[12] = "%.5f" % index_line[12]

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

1 Ответ

1 голос
/ 21 июня 2019

Проверьте настройки языка / региона в Excel.

Если в вашем регионе указано «.»как «разделитель тысяч», то ваше отформатированное число будет рассматриваться как целое число.

И использовать функцию str.format(), которая имеет форматер, чувствительный к локали:

# Python < 3.6
index_line[12] = "{:.5n}".format(index_line[12])

# Python >= 3.6
index_line[12] = f"{index_line[12]:.5n}"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...