1

我正在用 python 和 twitter 做一个小脚本,它工作正常,除了一件小事。

当我导入某个用户的推文的 id 时,我将它们打印出来,看看我是否得到了正确的信息,当我打印出来时,它是这样的:

330090997180665856

(来自 cnn 的一些随机推文。)但是,我使用 texttable 将它们打印到我收到的每条推文的转发计数旁边的表格中,这也很好。然而,在推文 ID 所在的列中,它是这样的:

3.301e+17

我假设这是因为 python 将其识别为 long 并出于某种原因将其变为浮点数。在将其附加到推文列表之前,我将其转换为字符串或 int,但问题仍然存在,我不知道该怎么办,我尝试过 long(tweet_id) 但那没有也不行。

可能有一些非常简单的解决方案,但我没有找到任何解决方案:/

编辑:这就是我的代码的样子:一些 OAuth 之前但没有把它放在这里

def main():
USER_ID = raw_input("Enter User Id: ")
COUNT = input("How many tweets to analyze: ")
OUT_FILE_NAME = OUT_DIR + 'output_file_test' + USER_ID + '.txt'

tweet_list = []
retweet_count_list = []
total_retweets = 0
#tweet_cursors = Cursor(api.user_timeline, id = USER_ID).items(COUNT)
while True:
    try:
        for tweet_cursor in Cursor(api.user_timeline, id = USER_ID).items(COUNT):
            print "cursoring"
            x = str(tweet_cursor.id)
            tweet_list.append(x)
            print x
            y = tweet_cursor.retweet_count
            retweet_count_list.append(y)
            print y
            total_retweets = total_retweets + y

        break
    except TweepError, e:
        some error handling


avg_retweet = total_retweets / COUNT
print "The Average retweets per tweet was: "
print avg_retweet
header = ["Tweet Id", "Retweet Amount"]
tab.header(header)
tab.set_cols_width([30,30])
for i in range(0, COUNT):
    one = str(tweet_list[i])
    two = str(retweet_count_list[i])
    tab.add_row([one, two])
output_table = tab.draw()
print output_table    
4

1 回答 1

2

您需要set_cols_dtype一个整数 ( 'i')。看起来它默认为自动('a')。

table = texttable.Texttable()
table.set_cols_dtype(['i',   # integer
                      'a' ]) # automatic
table.add_rows([['int', 'auto'], [330090997180665856, 330090997180665856], [1, 1]])
print table.draw()

给出:

+--------------------+-----------+
|        int         |   auto    |
+====================+===========+
| 330090997180665856 | 3.301e+17 |
+--------------------+-----------+
| 1                  | 1         |
+--------------------+-----------+
于 2013-05-03T15:39:36.373 回答