我试图用Twitter进行一些数据挖掘,但遇到了这个问题。当我尝试将tweet的大数字id写入CSV文件时,Python会不断将其转换为科学计数法。例如,如果ID为9381435503399854,python会将其转换为9.381435503399854E + 17。我尝试使用format(int(tweet.id), ".0f")
,但是它给了我相同的结果。 Format(int(tweet.id), "f")
似乎有效,但在ID的末尾附加了“ .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])
答案 0 :(得分:1)
我的猜测是您的脚本运行良好,并且您看到的效果(即转换为科学格式)是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)
答案 1 :(得分:0)