Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.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 将具有多个日期的字符串转换为datetime_Python_String_Datetime - Fatal编程技术网

Python 将具有多个日期的字符串转换为datetime

Python 将具有多个日期的字符串转换为datetime,python,string,datetime,Python,String,Datetime,如果我的字符串只包含一个日期,我会使用: datetime.datetime.strptime(string, '%b %d %Y').strftime('%Y-%m-%d') 但是,由于有许多沿字符串,我不知道如何继续。如何读取字符串并仅在需要时进行更改 这是我的字符串: s = 'Mar 27 2000*56.75*58.39*Mar 26 2000*53.10*56.13*Mar 25 2000*51.50*52.00' 我期待的是: s = '2000-03-27*56.75*58.

如果我的字符串只包含一个日期,我会使用:

datetime.datetime.strptime(string, '%b %d %Y').strftime('%Y-%m-%d')
但是,由于有许多沿字符串,我不知道如何继续。如何读取字符串并仅在需要时进行更改

这是我的字符串:

s = 'Mar 27 2000*56.75*58.39*Mar 26 2000*53.10*56.13*Mar 25 2000*51.50*52.00'
我期待的是:

s = '2000-03-27*56.75*58.39*2000-03-26*53.10*56.13*2000-03-25*51.50*52.00'
你可以做一个

new_s = s.split("*")

然后在datetime格式的列上使用您的代码。

如果所有字符串日期的格式都相同,您可以使用正则表达式获取字符串中的日期,然后替换它,我想这样做:

import re
import datetime

def operate_on_replacement(matchObj):
    match = matchObj.group(0)
    return datetime.datetime.strptime(match, '%b %d %Y').strftime('%Y-%m-%d')

start_string = 'Mar 27 2000*56.75*58.39*Mar 26 2000*53.10*56.13*Mar 25 2000*51.50*52.00'
replaced_string = re.sub(r'\w{3}\s{1}\d{2}\s{1}\d{4}', operate_on_replacement, start_string)