Python Django和kwargs为什么我会得到这个?
我正在尝试创建一个dict,执行以下操作Python Django和kwargs为什么我会得到这个?,python,django,Python,Django,我正在尝试创建一个dict,执行以下操作 data = { 'date': kwargs['this_number'], 'Number': kwargs['number'], } 但是,当我打印数据时,即 print(data) 我得到以下结果: { 'date': datetime.date(2018, 9, 30), 'Number': u'4929000000006' } 我的问题是,为什么Django添加了datetime.date(和u等等,我该
data = {
'date': kwargs['this_number'],
'Number': kwargs['number'],
}
但是,当我打印数据时,即
print(data)
我得到以下结果:
{
'date': datetime.date(2018, 9, 30),
'Number': u'4929000000006'
}
我的问题是,为什么Django添加了
datetime.date(
和u
等等,我该如何去除它们呢?我需要原始数据来发布一篇文章在python 2.x中u
意味着它是一个unicode对象,但它非常类似于字符串对象,要将其转换为原始数据,只需使用str()
方法或int()
方法
>>> type(u'K-DawG')
<type 'unicode'>
>>> type('K-DawG')
<type 'str'>
>>> type(str(u'K-DawG'))
<type 'str'>
要将日期作为字符串而不是datetime.date
对象获取,请使用.isoformat()
方法:
data = {
'date': datetime.date(2018, 9, 30).isoformat(),
'Number': int(u'4929000000006'),
}
print(data)
这将打印:{'Number':4929000000006,'date':'2018-09-30'}
注:我直接使用了
datetime.date(2018,9,30)
而不是kwargs['this_number']
是因为,你没有陈述更多的信息,或者没有公开更多的需要的代码。无论如何,我所陈述的必须足够了。当你打印字典时,它的项目不是str
-ified,而是repr
-ified。这是有充分理由的;如果它是str
-ified,那么{foo”,“22”
将作为打印出来{foo:22}
您可以通过手动打印词典来解决此问题:
import datetime
my_dict = {'date': datetime.date(2018, 9, 30),'Number': u'4929000000006'}
def substring(item):
if isinstance(item, unicode):
return repr(item)[1:]
if isinstance(item, datetime.date):
return repr(str(item))
return repr(item)
def dict_substrings(dict):
yield u"{"
if my_dict:
nameitems = my_dict.iteritems()
name, item = next(nameitems)
yield substring(name)
yield u": "
yield substring(item)
for name, item in nameitems:
yield u", "
yield substring(name)
yield u": "
yield substring(item)
yield u"}"
def dict_representation(dict):
return "".join(dict_substrings(dict))
print(dict_representation(my_dict))
关键功能是
substring
,您应该手动修改它,以按您希望的方式输出内容。为了保持O(n),它的效率有点冗长
您在这里没有提供足够的信息。传递给函数的参数是什么?调用函数的代码是什么?为什么不想要一个datetime
对象?您希望得到什么?一旦得到数据,您将如何处理它?为什么不希望字符串是Unicode?
import datetime
my_dict = {'date': datetime.date(2018, 9, 30),'Number': u'4929000000006'}
def substring(item):
if isinstance(item, unicode):
return repr(item)[1:]
if isinstance(item, datetime.date):
return repr(str(item))
return repr(item)
def dict_substrings(dict):
yield u"{"
if my_dict:
nameitems = my_dict.iteritems()
name, item = next(nameitems)
yield substring(name)
yield u": "
yield substring(item)
for name, item in nameitems:
yield u", "
yield substring(name)
yield u": "
yield substring(item)
yield u"}"
def dict_representation(dict):
return "".join(dict_substrings(dict))
print(dict_representation(my_dict))