在python中打印长整数

时间:2009-04-28 19:12:27

标签: python django datetime

如果我运行这个,其中vote.created_on是一个python datetime:

import calendar
created_on_timestamp = calendar.timegm(vote.created_on.timetuple())*1000
created_on_timestamp = str(created_on_timestamp)
将使用封装刻度线(')打印

created_on_timestamp。如果我做int()或类似的东西,我会得到像1240832864000L这样的数字,就JavaScript而言(这是我需要使用这些日期时间的地方)。

有人知道处理这种情况的最佳方法吗?我应该把长条作为一个字符串并剥去刻度线吗?这看起来很疯狂。

===已编辑的附录===

更大的问题是Django正在将其转换为HTML编码的等效& 39;(或类似的)。解决这个问题的最佳方法是将long转换为字符串,当模板解析字符串时,使用{{created_on_timestamp | safe}}将引号标记为引号。

2 个答案:

答案 0 :(得分:5)

>>> i = 1240832864000L
>>> i
1240832864000L
>>> print i
1240832864000
>>> 
>>> '<script type="text/javascript"> var num = %s; </script>' % i
'<script type="text/javascript"> var num = 1240832864000; </script>'

当您触发对象的__repr__

时,L才会显示

您何时以及如何将此数据发送到JavaScript?如果您将其作为JSON发送,则不必担心长文字或Python如何在Python中显示其对象。

答案 1 :(得分:4)

使用以下行:

created_on_timestamp = str(created_on_timestamp)

您正在将某些内容转换为字符串。 python控制台用单引号表示字符串(这是你用刻度线表示的吗?)字符串数据当然不包括引号。

当您使用int()将其重新转换为数字时,int()知道它很长,因为它太大了,并返回一个长整数。

python控制台用尾随L表示这个长数字。但数字内容当然不包括L

>>> l = 42000000000
>>> str(l)
'42000000000'
>>> l
42000000000L
>>> int(str(l))
42000000000L
>>> type( int(str(l)) )
<type 'long'>

尽管python控制台以这种方式表示数字和字符串(在python语法中),但您应该能够正常使用它们。你是否预料到一个问题,或者你现在遇到了一个问题?