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

Pandas解析PDF中德语日期格式问题求助

解决Pandas解析德语日期格式的问题

嘿,作为Pandas新手遇到这种本地化日期解析的问题太正常了!德语的月份名称和日期格式确实会让默认的pd.to_datetime摸不着头脑,我给你一套完整的解决方案,从PDF导入到最终导出CSV都搞定。

第一步:把PDF日程表转成DataFrame

首先得把PDF里的表格数据提取出来,推荐用tabula-py这个工具,专门处理PDF表格:

  • 先安装:pip install tabula-py
  • 读取PDF的代码示例:
import tabula

# 读取PDF所有页面的表格,取第一个结果(如果只有一个表格的话)
df = tabula.read_pdf("你的日程PDF文件.pdf", pages="all")[0]

如果读取的格式有点乱,可以试试加guess=False手动指定表格区域,或者stream=True适配流式PDF。

第二步:解析德语日期格式

你的日期格式是Do., 10. Mai 2018,其中Do.是德语周四(Donnerstag)的缩写,Mai是德语五月。这里有两种可靠的解析方法:

方法1:利用系统本地化设置

Pandas可以配合系统的locale识别德语月份,先设置德语locale(不同系统写法不同):

import pandas as pd
import locale

# 尝试设置德语locale(Linux/macOS适用)
try:
    locale.setlocale(locale.LC_TIME, "de_DE.UTF-8")
# Windows系统用这个
except:
    locale.setlocale(locale.LC_TIME, "German_Germany.1252")

# 解析Start Date列,指定格式匹配规则
df["Start Date"] = pd.to_datetime(
    df["Start Date"],
    format="%a., %d. %B %Y",
    errors="coerce"  # 解析失败的会标记为NaT,方便后续排查问题
)

格式字符串说明:

  • %a.:匹配缩写的星期名称(比如Do.)
  • %d.:匹配带点的日期数字(比如10.)
  • %B:匹配完整的德语月份名称(比如Mai)
  • %Y:匹配4位年份

方法2:手动替换德语月份(规避locale问题)

如果你的系统没法设置德语locale(比如某些服务器环境),可以手动把德语月份替换成英文,再解析:

# 德语月份到英文的映射字典
german_to_english_months = {
    "Januar": "January",
    "Februar": "February",
    "März": "March",
    "April": "April",
    "Mai": "May",
    "Juni": "June",
    "Juli": "July",
    "August": "August",
    "September": "September",
    "Oktober": "October",
    "November": "November",
    "Dezember": "December"
}

# 替换Start Date里的德语月份
df["Start Date"] = df["Start Date"].replace(german_to_english_months, regex=True)

# 用英文格式规则解析日期
df["Start Date"] = pd.to_datetime(df["Start Date"], format="%a., %d. %B %Y")

第三步:适配日历工具的CSV格式

像Google日历这类工具通常需要完整的开始/结束时间,所以把日期和时间合并成标准datetime列:

# 合并日期与时间,生成完整的时间戳
df["Start Datetime"] = pd.to_datetime(df["Start Date"].astype(str) + " " + df["Start Time"])
df["End Datetime"] = pd.to_datetime(df["Start Date"].astype(str) + " " + df["End Time"])

# 导出为适合日历导入的CSV,只保留必要列
df[["Start Datetime", "End Datetime", "Location", "Subject"]].to_csv("可导入日历的日程表.csv", index=False)

这样导出的CSV就能直接导入Google日历或者其他工具啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:36:44