Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.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 将字符串中的strtime值格式化为日期_Python_Datetime_Strptime_String Conversion - Fatal编程技术网

Python 将字符串中的strtime值格式化为日期

Python 将字符串中的strtime值格式化为日期,python,datetime,strptime,string-conversion,Python,Datetime,Strptime,String Conversion,我有以下代码,这是读取文本文件的开始,将其转换为json对象,然后获取其中的一些值并处理读入的日期字符串: import json from datetime import date, timedelta, datetime my_list = [] my_list2 = [] filepath = 'myfile' x_contents = open(filepath, "r") x_contents = x_contents.rea

我有以下代码,这是读取文本文件的开始,将其转换为json对象,然后获取其中的一些值并处理读入的日期字符串:

    import json
    from datetime import date, timedelta, datetime

    my_list = []
    my_list2 = []

    filepath = 'myfile'
    x_contents = open(filepath, "r")
    x_contents = x_contents.read()
    x_contents = json.loads(x_contents.replace("u'", '"').replace("'", '"'))

    for mydate in x_contents:

        for mydate2 in mydate:

            the_match = mydate2[0]
            the_date = mydate2[2]
            the_date = datetime.strptime(the_date,"%A, %b %d %Y")
            print the_date #writes to the log in the correct format

            my_list.append(the_match)
            my_list.append(the_date) #appends the strptime tuple to the list, not the formatted date as it appears with the print statement above

            my_list2.append(my_list)
            my_list = []

for i in my_list2:

    print i
一些示例输出:

2015-08-08 00:00:00
2015-08-08 00:00:00
2015-08-08 00:00:00
2015-08-08 00:00:00
2015-08-08 00:00:00
...
...
...
[958431, datetime.datetime(2015, 8, 8, 0, 0)]
[958427, datetime.datetime(2015, 8, 8, 0, 0)]
[958429, datetime.datetime(2015, 8, 8, 0, 0)]
[958430, datetime.datetime(2015, 8, 8, 0, 0)]
[958433, datetime.datetime(2015, 8, 8, 0, 0)]
...
...
...
有谁能告诉我,为了将列表中的第二个元素转换成正确的格式,我缺少了什么


谢谢

我想
'2015-08-08 00:00:00'
就是你所说的“正确格式”。如果是:

当对象作为容器中的元素打印时,通过调用其
\uuuu repr\uuuu
而不是
\uuu str\uuuu
来打印,这就是为什么
日期时间
对象在列表中似乎没有格式化的原因。见此:

>>> repr(t)
'datetime.datetime(2015, 8, 8, 0, 0)'
>>> [t, str(t)]
[datetime.datetime(2015, 8, 8, 0, 0), '2015-08-08 00:00:00']
编辑:

现在考虑到列表打印代码,它实际上非常简单。只需将其更改为:

for i in my_list2:
    # instead of i, print a list in which every item in i is converted to str(i)
    print [str(item) for item in i]
或相当于:

for i in my_list2:
    # map(str, i) does the same thing as [str(item) for item in i]
    print map(str, i)  # would have to be list(map(str, i)) in python 3

您似乎不熟悉列表理解和
map
。阅读并了解它们。

我想
'2015-08-08 00:00:00'
就是你所说的“正确格式”。如果是:

当对象作为容器中的元素打印时,通过调用其
\uuuu repr\uuuu
而不是
\uuu str\uuuu
来打印,这就是为什么
日期时间
对象在列表中似乎没有格式化的原因。见此:

>>> repr(t)
'datetime.datetime(2015, 8, 8, 0, 0)'
>>> [t, str(t)]
[datetime.datetime(2015, 8, 8, 0, 0), '2015-08-08 00:00:00']
编辑:

现在考虑到列表打印代码,它实际上非常简单。只需将其更改为:

for i in my_list2:
    # instead of i, print a list in which every item in i is converted to str(i)
    print [str(item) for item in i]
或相当于:

for i in my_list2:
    # map(str, i) does the same thing as [str(item) for item in i]
    print map(str, i)  # would have to be list(map(str, i)) in python 3

您似乎不熟悉列表理解和
map
。阅读有关它们的信息,然后。

我认为你应该使用

datetime.datetime.strftime(the_date, "%x %X") 

(或其他格式字符串)以您想要的方式格式化日期时间。查看更多指南。

我认为您应该使用

datetime.datetime.strftime(the_date, "%x %X") 


(或其他格式字符串)以您想要的方式格式化日期时间。请查看以获得更多指导。

我不明白您的问题,您能提供更多详细信息吗?请查看对问题的评论below@gdogg371:尝试
我的列表。追加(str(日期))
我不明白你的问题,你能提供更多详细信息吗?请查看问题的评论below@gdogg371:尝试
my_list.append(str(日期))
i稍微编辑了我的问题……我正在从一个表示日期的文件中读取字符串……我使用strtime将其转换为实际的日期值。如果我打印我分配给(日期)的值,我会得到一个格式正确的日期值……如果我将“日期”附加到一个列表,然后打印该列表,我会得到一个日期组件的strtime元组,而不是日期,这不是我想要的…@gdogg371这是因为容器中的对象是通过调用它的
\uuuu repr\uu
来打印的。如果你想调用它的
\uu str\uu
方法,你需要用
str()
显式地调用它。但是我不希望它是一个字符串,我希望它是一个日期值,因为我会将它与从datetime生成的日期进行比较。今天()@gdogg371你可以将它们作为
datetime
对象保存在列表中,并且只能通过
str()进行转换
打印列表时。也许如果你发布你的列表打印代码(这不是你当前发布的代码),那么我可以帮助你找到最好的方法。我现在已经修改了代码,所以列表打印的位置就在代码的底部。thanksive稍微编辑了我的问题…我正在从一个表示日期的文件中读取字符串…我使用strtime将其转换为实际的日期值。如果我打印我分配给(日期)的值,我会得到一个格式正确的日期值……如果我将“日期”附加到一个列表,然后打印该列表,我会得到一个日期组件的strtime元组,而不是日期,这不是我想要的…@gdogg371这是因为容器中的对象是通过调用它的
\uuuu repr\uu
来打印的。如果你想调用它的
\uu str\uu
方法,你需要用
str()
显式地调用它。但是我不希望它是一个字符串,我希望它是一个日期值,因为我会将它与从datetime生成的日期进行比较。今天()@gdogg371你可以将它们作为
datetime
对象保存在列表中,并且只能通过
str()进行转换
打印列表时。也许如果你发布你的列表打印代码(这不是你当前发布的代码),那么我可以帮助你找到最好的方法。我现在已经修改了代码,所以列表打印的位置就在代码的底部。Thanks这会将其转换为字符串值,而不是从datetime.today()语句中获取的值这会将其转换为字符串值,而不是从datetime.today()语句中获取的值