Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django和kwargs为什么我会得到这个?_Python_Django - Fatal编程技术网

Python Django和kwargs为什么我会得到这个?

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等等,我该

我正在尝试创建一个dict,执行以下操作

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))