Python 将字符串日期拆分为多个日期的列表

Python 将字符串日期拆分为多个日期的列表,python,Python,我有下面的列表,我正试图将元素相应地拆分为多个“日期”,我想编写一个函数来完成它,我不确定它是正则表达式还是datetime x=["2- 7 MAY, 2020, 10-12 JUN, 2014","7 February, 2020, 6 February, 2020, 26 October, 2018","16 JUN, 2020, 24 JUL, 2020, 28 FEB, 2020, 15 SEPT, 2020, 8-11 MAY, 2023, 22 OCT, 2020","14 JUN

我有下面的列表,我正试图将元素相应地拆分为多个“日期”,我想编写一个函数来完成它,我不确定它是正则表达式还是
datetime

x=["2- 7 MAY, 2020, 10-12 JUN, 2014","7 February, 2020, 6 February, 2020, 26 October, 2018","16 JUN, 2020, 24 JUL, 2020, 28 FEB, 2020, 15 SEPT, 2020, 8-11 MAY, 2023, 22 OCT, 2020","14 JUN, 2020"]

for i in x:
    temp=my_func(i)
    if len(temp)==1:
        date1=temp[0]
        date2=""
    elif len(temp)>=2:
        date1=temp[0]
        date2=temp[1]
    else:
        continue
    #rest of my code
以下是
my_func

#my_func(x[0])=["2- 7 MAY, 2020", "10-12 JUN, 2014"]
#my_func([x[1]])=["7 February, 2020", "6 February, 2020", "26 October, 2018"]
#my_func(x[-1])=["14 JUN, 2020"]

使用
,“
拆分字符串。零件的数量总是偶数。两个相邻部分构成一个日期。所以只要把两部分连接起来就可以形成一个日期字符串

re
可以,但这也应该:

>>> x = ["2- 7 MAY, 2020, 10-12 JUN, 2014","7 February, 2020, 6 February, 2020, 26 October, 2018","16 JUN, 2020, 24 JUL, 2020, 28 FEB, 2020, 15 SEPT, 2020, 8-11 MAY, 2023, 22 OCT, 2020","14 JUN, 2020"]
>>> result = []
>>> for s in x:
        parts = s.split(',')
        result.append([','.join(parts[i:i+2]).strip() for i in range(0,len(parts),2)])
>>> result
[['2- 7 MAY, 2020', '10-12 JUN, 2014'], 
 ['7 February, 2020', '6 February, 2020', '26 October, 2018'], 
 ['16 JUN, 2020', '24 JUL, 2020', '28 FEB, 2020', '15 SEPT, 2020', '8-11 MAY, 2023', '22 OCT, 2020'], 
 ['14 JUN, 2020']
]
您的
my_func
将是:

>>> def my_func(s):
        parts = s.split(',')
        return [','.join(parts[i:i+2]).strip() for i in range(0,len(parts),2)]

根据你的例子,

import re
for i in x:
    temp =re.findall('\d.*?\d{4}',i)
#output
['2- 7 MAY, 2020', '10-12 JUN, 2014']
['7 February, 2020', '6 February, 2020', '26 October, 2018']
['16 JUN, 2020', '24 JUL, 2020', '28 FEB, 2020', '15 SEPT, 2020', '8-11 MAY, 2023', '22 OCT, 2020']
['14 JUN, 2020']

使用了全局变量,但输出是您想要的。 程序取决于日期的格式。但是这种格式很好用

dates=["2- 7 MAY, 2020, 10-12 JUN, 2014","7 February, 2020, 6 February, 2020, 26 October, 2018","16 JUN, 2020, 24 JUL, 2020, 28 FEB, 2020, 15 SEPT, 2020, 8-11 MAY, 2023, 22 OCT, 2020","14 JUN, 2020"]

def splitdates(date):
    if type(date) is int:
        tosplit = str(dates[date])
    else:
        tosplit = date
    month = ["J" , "j" , "f" , "F" , "m" , "M" , "A" , "a" , "s" , "S" ,"n" , "N" , "o" , "O" , "D" , "d"]
    for item, character in enumerate(tosplit):
        if character in month:
            for item2, character in enumerate(tosplit[item+1:]):
                if character.startswith(","):
                    for item3, character in enumerate(tosplit[item+item2+2:]):
                        if character.startswith(","):
                            global newdate
                            newdate.append(tosplit[:item + item2 + item3 + 3])
                            nextPart = tosplit[item + item2 + item3 + 3:]

                            if nextPart.endswith(";"):
                                newPart = nextPart
                                splitdates(newPart)

                            else:
                                newdate.append(tosplit[item+item2+item3+3:])
                                return newdate

                    newdate.append(tosplit[:item+item2+item3])
                    return newdate


for x in range(len(dates)):
    newdate = []
    print("Date: ",splitdates(x))
输出为:

Date:  ['2- 7 MAY, 2020,', ' 10-12 JUN, 2014']
Date:  ['7 February, 2020,', ' 6 February, 2020, 26 October, 2018']
Date:  ['16 JUN, 2020,', ' 24 JUL, 2020, 28 FEB, 2020, 15 SEPT, 2020, 8-11 MAY, 2023, 22 OCT, 2020']
Date:  ['14 JUN, 2']

**这是最简单的算法**

遍历列表逐个拾取字符串现在使用split方法遍历字符串 选择两个连续的值并将它们添加到新列表中

x = ["2- 7 MAY, 2020, 10-12 JUN, 2014","7 February, 2020, 6 February, 2020, 26 October, 2018","16 JUN, 2020, 24 JUL, 2020, 28 FEB, 2020, 15 SEPT, 2020, 8-11 MAY, 2023, 22 OCT, 2020","14 JUN, 2020"]
for i in x:
     final_answer=[]
     f=i.split(',')
     j=0
     while(j<len(f)):
        final_answer.append((str(f[j]+f[j+1])))
        j=j+2
print(final_answer)
x=[“2020年5月2日至7日,2014年6月10日至12日”,“2020年2月7日,2020年2月6日,2018年10月26日”,“2020年6月16日,2020年7月24日,2020年2月28日,2020年9月15日,2023年5月8日至11日,2020年10月22日”,“2020年6月14日”]
对于x中的i:
最终答案=[]
f=i.split(',')
j=0
while(j