You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何解析类似Excel“完整日期”格式的葡语日期文本

你当前代码运行失败有两个核心错误:

  1. locale设置方法调用错误:locale模块没有set方法,正确的设置方法是locale.setlocale
  2. 日期格式符写反:葡萄牙语星期全称的占位符是%A,你误写为A%
可行实现方案

方案1:修正代码直接匹配原始格式转换

优势是不需要修改原始日期字符串,直接对应格式转换,注意适配不同操作系统的locale名称即可:

import locale
from datetime import datetime
import pandas as pd

# 适配不同系统的葡萄牙语巴西locale名
try:
    # Linux/macOS环境
    locale.setlocale(locale.LC_TIME, 'pt_BR.utf8')
except:
    # Windows环境
    locale.setlocale(locale.LC_TIME, 'Portuguese_Brazil.1252')

# 标准库datetime转换
dt_obj = datetime.strptime("Quarta-feira, 1 de Janeiro de 2020", "%A, %d de %B de %Y")
print(dt_obj) # 输出 2020-01-01 00:00:00

# pandas转换同理,修正参数即可
pd_dt = pd.to_datetime("Quarta-feira, 1 de Janeiro de 2020", format="%A, %d de %B de %Y")
print(pd_dt) # 输出 2020-01-01 00:00:00

方案2:移除星期部分后转换(跨环境兼容性更强)

就是你提到的思路,不需要依赖系统locale配置,不会因为环境差异报错,适合批量处理CSV场景:

import pandas as pd

# 单条字符串处理
date_str = "Quarta-feira, 1 de Janeiro de 2020"
processed_str = date_str.split(",", 1)[1].strip()
dt = pd.to_datetime(processed_str, format="%d de %B de %Y")
print(dt)

# CSV整列批量处理
df = pd.read_csv("你的报表路径.csv")
df['日期列'] = pd.to_datetime(df['日期列'].str.split(",",1).str[1].str.strip(), format="%d de %B de %Y")

方案3:使用dateutil库无格式转换

如果不想手动写格式规则,也可以自定义dateutil的解析规则,不需要依赖系统locale:

from dateutil.parser import parse
from dateutil.parser import parserinfo

class PTBRParserInfo(parserinfo):
    WEEKDAYS = [
        ("Segunda-feira", "Seg"),
        ("Terça-feira", "Ter"),
        ("Quarta-feira", "Qua"),
        ("Quinta-feira", "Qui"),
        ("Sexta-feira", "Sex"),
        ("Sábado", "Sáb"),
        ("Domingo", "Dom")
    ]
    MONTHS = [
        ("Janeiro", "Jan"),
        ("Fevereiro", "Fev"),
        ("Março", "Mar"),
        ("Abril", "Abr"),
        ("Maio", "Mai"),
        ("Junho", "Jun"),
        ("Julho", "Jul"),
        ("Agosto", "Ago"),
        ("Setembro", "Set"),
        ("Outubro", "Out"),
        ("Novembro", "Nov"),
        ("Dezembro", "Dez")
    ]

dt = parse("Quarta-feira, 1 de Janeiro de 2020", parserinfo=PTBRParserInfo())
print(dt)

内容的提问来源于stack exchange,提问作者Daniel Lima

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 14:45:07