如何将列表中的第一个元素从字符串更改为日期格式?

时间:2018-06-20 07:11:01

标签: python string list datetime

我有以下包含这些列表的文本文件:

['2009-08-31 23:58:06 ', '1']
['2009-08-31 23:58:06 ', '1']
['2009-08-31 23:58:06 ', '0']
['2009-08-31 23:58:06 ', '1']
['2009-08-31 23:58:06 ', '1']
['2009-08-31 23:58:06 ', '1']
['2009-08-31 23:58:06 ', '1']
['2009-08-31 23:58:06 ', '1']
['2009-08-31 23:58:06 ', '1']
['2009-08-31 23:58:06 ', '1']
['2009-08-31 23:58:06 ', '1']
['2009-08-31 23:58:07 ', '1']
['2009-08-31 23:58:07 ', '1']
['2009-08-31 23:58:07 ', '1']

第二个元素是整数,但是,第一个元素是字符串。我需要每个lis的第一个元素是日期而不是字符串吗?

我尝试了以下代码:

 word[0]=datetime.strptime(word[0],'%Y/%m/%d %H:%M:%S')

但我收到此错误:

ValueError: time data '2009-04-02 22:50:06 ' does not match format '%Y/%m/%d %H:%M:%S'

我当前用于清除数据的代码如下:

with open('newdata.txt') as f:
    for line in f:
       tweet=re.sub(r'T\t',"",line)
       t=re.sub(r'W\t',"\/\/",tweet)
       data=t.split("\/\/")
       sentiment_value= s.sentiment(data[1])
       data.append(sentiment_value)

       words = [w.replace('pos', '1') for w in data]
       word=[w.replace('neg','0')for w in words]
       del word[1]
       print(word)

3 个答案:

答案 0 :(得分:2)

datetime.strptime(word[0], '%Y-%m-%d %H:%M:%S ')

将起作用。请注意'-'和尾随空格。根据您的用例以及是否有更多不同的脏数据,最好剥离输入或使用一些更强大的实用程序,例如dateparser

答案 1 :(得分:0)

简单地写:

from datetime import datetime
word=['2009-08-31 23:58:09 ', 1]
value = datetime.strptime(word[0].strip(),'%Y-%m-%d %H:%M:%S')
print(value)

注意:如果不去除两边的空白,则会出现unconverted data remains错误。

答案 2 :(得分:0)

import datetime
word = ['2009-08-31 23:58:09 ', 1]

将'%Y /%m%d%H:%M:%S'更改为'%Y-%m-%d%H:%M:%S'

word[0]=datetime.datetime.strptime(word[0],'%Y-%m-%d %H:%M:%S')