首页 > 解决方案 > 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)

标签: pythonstrptime

解决方案


第一个日期有效,因为mai它是法语的完整月份名称,但avr它是avril. 30 avril 2020 23:19:12作品。


推荐阅读