1. ホーム
  2. python

[解決済み] Pythonは長い数値をfloatに変換すると思います(例:x.xxxe+yy)。

2022-02-09 09:36:18

質問事項

Pythonとtwitterを使った小さなスクリプトを作成しています。

あるユーザーのツイートのIDをインポートするときに、正しい情報を取得しているかどうかを確認するためにプリントアウトすると、このような形で出力されます。

330090997180665856

(cnnからのランダムなツイートです。) しかし、私はtexttableを使って、取得した各ツイートのリツイート数の横にあるテーブルにそれらを出力しています、そしてそれは同様にうまくいっています。しかし、ツイートIDが入るカラムでは、このように表示されます。

3.301e+17

これはpythonがこれをlongと認識し、なぜかfloatにしてしまったからだと推測しています。ツイートリストに追加する直前に文字列やintに変換していますが、問題はまだ残っていて、どうすればいいのかわかりません。

とんでもなく簡単な解決策があるかもしれませんが、私は何も見つけていません :/。

EDIT: これは私のコードのようなものです。 以前は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    

解決方法は?

必要なのは set_cols_dtype を整数に変換してください ( 'i' ). デフォルトはautoのようです( '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         |
+--------------------+-----------+