Почему запись длинного числа String в файл в Python приводит к тому, что строка превращается в научную нотацию? - PullRequest
0 голосов
/ 13 мая 2019

и спасибо за чтение.У меня есть сценарий Python, который читает данные из одного файла и записывает их в другой.Одно из полей содержит идентификаторы, которые могут быть очень длинными числами со смешанными буквенными символами. У некоторых также есть где-то смешанный период.

Таким образом, идентификатор может выглядеть как любая комбинация цифр, букв и периодов.

Например, идентификатор может выглядеть следующим образом:

  • 5533443323BBG1234567890B5ABA49D1C074111C
  • 11111111111.222222222222
  • 101 * * * * * * * * * * * * * * * * *что некоторые идентификаторы, похожие на первый маркер, выражаются в научной нотации после того, как они записаны в файл.

    Поэтому, пока выполняется скрипт, я печатаю значение и получаю правильную вещь:

    • 5533443323BBG1234567890B5ABA49D1C074111C

    , но когда я проверяю его в файле (блокнот ++ или excel), он выглядит следующим образом:

    • 5.5334E + 37

    Я не делал никакой другой обработки для поля, кроме как просто записал ее в файл в виде строки.Я проверил с помощью команды type (), что это тип str.

    Кто-нибудь знает, что может происходить?

    Входной файл - это просто CSV со многими столбцами, одним из которых является нужный мне идентификатор.

    Этовыдержка из моего кода:

    allIDs = {}
    with open(report, "r") as reportFile: 
    
                reportText = csv.reader(reportFile, quotechar='"', delimiter=",", quoting=csv.QUOTE_ALL,skipinitialspace=True)
                for cols in reportText:
    
                    ID = dict["ID"]
                    date = dict["date"]
                    product = dict["product"]
                    price = dict["price"]
    
                    allIDs[ID] = [[date, ID, product,price]]
    
    
                    with open("output_file.csv", "w", newline ="") as writefile:
                       writer = csv.writer(writefile, quoting=csv.QUOTE_ALL)
                       writer.writerow(["date", "ID", "product", "price"])
    
                    for key,value in allIDs.items():
                        writer.writerow(value)
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...