Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.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 检查列表中的日期,验证它,替换某些值并将其转换为日期对象_Python_Python 3.x - Fatal编程技术网

Python 检查列表中的日期,验证它,替换某些值并将其转换为日期对象

Python 检查列表中的日期,验证它,替换某些值并将其转换为日期对象,python,python-3.x,Python,Python 3.x,我有一个值列表,我想检查和验证日期值,将它们从字符串转换为日期对象。但有一个问题,一些日期类似于这种类型的字符串“预计在2018年5月” 我想将“预计在2018年5月”替换为“2018年5月1日”,然后转换为日期对象 以下是我的清单: mylist= ['13 April 2018','Mercury','0','13 April 2018', 'October', '59','27 April 2018','Kaala','0','27 April 2018', 'Adityam','34',

我有一个值列表,我想检查和验证日期值,将它们从字符串转换为日期对象。但有一个问题,一些日期类似于这种类型的字符串“预计在2018年5月” 我想将“预计在2018年5月”替换为“2018年5月1日”,然后转换为日期对象

以下是我的清单:

mylist= ['13 April 2018','Mercury','0','13 April 2018', 'October', '59','27 April 2018','Kaala','0','27 April 2018', 'Adityam','34','Expected in May 2018','XXX','99']
以下是我目前的代码:

for n, i in enumerate(mylist):
    if i == datetime.strptime(i, '%d %b %Y'):
        mylist[n] = datetime.strptime('12 Dec 2016', '%d %b %Y')
pprint.pprint(mylist)
上述清单的最终输出应为:

mylist= ['2018-04-13 00:00:00','Mercury','0','2018-04-13 00:00:00', 'October', '59','2018-04-27 00:00:00','Kaala','0','2018-04-27 00:00:00', 'Adityam','34','2018-05-01 00:00:00','XXX','99']

如有任何帮助,我们将不胜感激。

需要进行4项更改:

  • 如果无法分析日期,则引发ValueError,因此如果i==datetime.strTime(i,'%d%b%Y'):必须替换为
    try:。。。除外:
    块:

    for n, i in enumerate(mylist):
        try:
            mylist[n] = datetime.strptime(i, '%d %b %Y')
        except ValueError:
            pass
    
  • 您的日期格式不正确<代码>%b表示“缩写的月份名称”,但您的月份名称不缩写。您必须改用
    %B

    for n, i in enumerate(mylist):
        try:
            mylist[n] = datetime.strptime(i, '%d %B %Y')
        except ValueError:
            pass
    
  • 如果您希望列表中的日期格式为“2018-04-13 00:00:00”,则必须使用以下格式:

  • 如果字符串以“预期输入”开头,请将其替换为“01”:

  • 结果:

    ['2018-04-13 00:00:00',
     'Mercury',
     '0',
     '2018-04-13 00:00:00',
     'October',
     '59',
     '2018-04-27 00:00:00',
     'Kaala',
     '0',
     '2018-04-27 00:00:00',
     'Adityam',
     '34',
     '2018-05-01 00:00:00',
     'XXX',
     '99']
    

    需要进行4项更改:

  • 如果无法分析日期,则引发ValueError,因此如果i==datetime.strTime(i,'%d%b%Y'):必须替换为
    try:。。。除外:
    块:

    for n, i in enumerate(mylist):
        try:
            mylist[n] = datetime.strptime(i, '%d %b %Y')
        except ValueError:
            pass
    
  • 您的日期格式不正确<代码>%b表示“缩写的月份名称”,但您的月份名称不缩写。您必须改用
    %B

    for n, i in enumerate(mylist):
        try:
            mylist[n] = datetime.strptime(i, '%d %B %Y')
        except ValueError:
            pass
    
  • 如果您希望列表中的日期格式为“2018-04-13 00:00:00”,则必须使用以下格式:

  • 如果字符串以“预期输入”开头,请将其替换为“01”:

  • 结果:

    ['2018-04-13 00:00:00',
     'Mercury',
     '0',
     '2018-04-13 00:00:00',
     'October',
     '59',
     '2018-04-27 00:00:00',
     'Kaala',
     '0',
     '2018-04-27 00:00:00',
     'Adityam',
     '34',
     '2018-05-01 00:00:00',
     'XXX',
     '99']
    

    你的问题是什么?你缺少了一些语句,比如导入,无论如何还有更多的错误,比如你认为“有效”的日期与你指定的格式不匹配。例如:如果我正确理解问题,时间数据“2018年4月13日”与格式“%d%b%Y”不匹配:1。在列表2中查找所有有效日期。将它们转换为ISO 8601时间戳和/或日期对象3???4.利润@Blacksilver您的理解是正确的您的问题是什么?您缺少一些语句,例如导入,无论如何,还有更多错误,例如您认为“有效”的日期与指定格式不匹配。例如:如果我正确理解问题,时间数据“2018年4月13日”与格式“%d%b%Y”不匹配:1。在列表2中查找所有有效日期。将它们转换为ISO 8601时间戳和/或日期对象3???4.利润@Blacksilver你的理解是correct@AranFey:它不会将所有日期仅转换为“%d%b%Y”some@spider22哎呀,我没注意到。我的错。答案已更新。@AranFey:它不会将所有日期仅转换为“%d%b%Y”some@spider22哎呀,我没注意到。我的错。答案已更新。