Python, преобразующий твиты и идентификаторы пользователей в научную нотацию - PullRequest
0 голосов
/ 09 сентября 2018

Я пытался провести анализ данных с помощью твиттера и столкнулся с этой проблемой. Python продолжает преобразовывать большие числовые идентификаторы твита в научную нотацию, когда я пытаюсь записать его в файл CSV. Например, если идентификатор был 9381435503399854, Python преобразует его в 9.381435503399854E + 17. Я пытался использовать format(int(tweet.id), ".0f"), но это дает мне тот же результат. Format(int(tweet.id), "f") вроде бы работает, но добавляет ".000000" в конец идентификатора. Любые предложения будут ценны. Вот пример кода:

writeExtended(count, tweet.id, tweet.full_text.encode('utf8'), tweet.display_text_range, tweet.created_at)

def writeExtended(id, idstr, full_text, display_text_range, created_at):
    #Write Extended tweet details to CSV file
    with open('Extended.csv', mode='a+') as employee_file:
        employee_writer = csv.writer(employee_file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
        employee_writer.writerow([id,idstr, full_text, display_text_range, created_at])

1 Ответ

0 голосов
/ 11 сентября 2018

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

В качестве немного странного обходного пути вы можете преобразовать его в текст и добавить к нему префикс символа табуляции. Это должно остановить преобразование:

def writeExtended(id, idstr, full_text, display_text_range, created_at):
    #Write Extended tweet details to CSV file
    with open('Extended.csv', mode='a+', newline='') as employee_file:
        employee_writer = csv.writer(employee_file)
        employee_writer.writerow([id, '\t{}'.format(idstr), full_text, display_text_range, created_at])

writeExtended(count, tweet.id, tweet.full_text.encode('utf8'), tweet.display_text_range, tweet.created_at)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...