ValueError: 时间数据 '30 avr. 2020 23:19:12' 与格式 '%d %b %Y %H:%M:%S' 不匹配

问题描述

我想用 strptime 转换法语日期。

query_time=time.strptime(query_time,'%d %b %Y %H:%M:%s')

正在处理 1 mai 2020 10:21:26 但不在 30 avr. 2020 23:19:12。我指定了这行代码

locale.setlocale(locale.LC_ALL,'fr_FR.UTF-8')

两个日期有相同的模式,你知道为什么这对第二个不起作用吗?

这是我的代码

import re
import time
import pandas as pd
from datetime import datetime
from bs4 import BeautifulSoup
import locale


locale.setlocale(locale.LC_ALL,'fr_FR.UTF-8')

# Fetch the html file
html_doc = googleData = open("./MonActivité_vr.html",encoding='utf8')


# Parse the html file
soup = BeautifulSoup(html_doc,'html.parser')

rows = soup.find_all("div",class_="outer-cell")
i = 0
j = 0

searchMonth = []
searchDay = []
searchYear = []
Recherche = []
URL= []

for row in rows: 

    i += 1
    print(f"Ligne {i} : ")

    cells = row.find_all("div",class_="content-cell")

    print(cells)

    # search / visited

    substring = "Vous avez consulté"

    if substring in str(cells[0]):

        print("Search")

    # SERP 
        print(cells[0])
        for a in cells[0].find_all('a',href=True):
            
            print(f"SERP : {a['href']}")#récupère le contenu de l'attribut href qui contient l'url du site consulté

            URL.append(a['href'])

            print("\n")

            print(f"KW : {a.string}")#récupère le contenu texte de la balise a => titre de la page consultée

            Recherche.append(a.string)

            

        # Time 16 mai 2020 à 16:50:52 CET
        
        query_time = ''.join(cells[0].find('br').next_siblings)
        print(query_time)

        # Removing timezone
        query_time = query_time.replace(" CET","")
        query_time = query_time.replace(" à","")
        print(query_time)
        #query_time = time.mktime(datetime.datetime.strptime(query_time,"%d %b %Y %H:%M:%s").timetuple())


        
        query_time=time.strptime(query_time,'%d %b. %Y %H:%M:%s')
        

        #print(query_time[0])
        
        searchDay.append(query_time[2])
        searchMonth.append(query_time[1])
        searchYear.append(query_time[0])


        print(query_time)
        print("\n")
        print(f"Date : {query_time}") 
        print("\n")
    
    else:
        print("Visited")

searchDict = {
        'URL':URL,'Recherche':Recherche,'searchDay':searchDay,'searchMonth':searchMonth,'searchYear':searchYear
        }

print(searchDict)

searchDF = pd.DataFrame(searchDict)

searchDF.to_csv(path_or_buf = 'D_searchData.csv',index=False)

解决方法

第一个日期有效,因为 mai 是法语的完整月份名称,但 avravril 的缩写(对不起,我的英语不好!)。 30 avril 2020 23:19:12 有效。