数据导出

如何分日期将LINE聊天记录完整导出为CSV格式?

line聊天官方团队
LINE聊天记录导出CSV, LINE如何按日期导出, LINE CSV导出步骤, LINE导出筛选日期, LINE电脑版保存聊天记录, LINE备份数据为表格, LINE聊天记录无法导出怎么办, LINE官方导出功能说明
聊天记录CSV日期筛选数据导出备份

功能定位:为什么官方不直接给你“分日期CSV”

在 LINE 里,聊天记录导出的核心入口只有两处:手机端「备份至 iCloud/Google Drive」与桌面端「导出文本文件(Talk 导出)」。前者加密后仅供整机还原,后者生成 .txt 且没有时间筛选器。官方设计初衷是“备份还原”而非“数据分析”,所以分日期 CSV 并不是第一方功能,只能先拿到原始文本,再用脚本二次拆表。

经验性观察:2026 年 2 月更新的 14.8.0 仍维持这一策略,社区呼声最高的「按日期导出表格」并未出现在路线图。若你负责社群运营或合规审计,就必须走“官方导出 + 外部转换”的折中路线。

功能定位:为什么官方不直接给你“分日期CSV”
功能定位:为什么官方不直接给你“分日期CSV”

前置条件与版本差异

移动端:只能整机加密备份

iOS 与 Android 均把聊天记录打包进 .zip 加密文件,密钥存在设备钥匙串,电脑端无法直接解压。因此手机端不能产生可读的 CSV,只能作为“中转仓库”。

桌面端:Windows/macOS 原生支持 TXT 导出

截至当前的最新版本,LINE Desktop ≥ 8.4 在任意聊天窗口右上角「⋯」→「其他设置」→「导出聊天记录」→ 选择「文本文件(.txt)」即可得到 UTF-16LE 编码的原始记录,含时间戳、发送者、消息内容,但不含图片、语音、贴图二进制。

提示

若你第一次使用桌面端,需先在手机「设置→LINE Labs→允许登录桌面版」开启权限,否则扫码后只能收消息,无法拉历史。

完整操作路径:从 TXT 到分日期 CSV

Step 1 获取原始 TXT

  1. 在桌面端打开目标聊天(1:1 或群均可)。
  2. 右上角「⋯」→「其他设置」→「导出聊天记录」。
  3. 取消勾选「包含图片等媒体」,加快导出速度。
  4. 保存路径建议新建文件夹,例如 D:\LINE_RAW\,文件名默认「聊天名称_日期.txt」。

Step 2 编码转换(UTF-16LE → UTF-8)

Excel 直接打开 UTF-16LE 会错位,先用 VS Code / Notepad++ 转码:

  • VS Code:右下角点击「UTF-16LE」→「另存为」→ 选择「UTF-8」。
  • 命令行(Windows PowerShell):Get-Content .\input.txt | Set-Content -Encoding UTF8 .\output.txt

Step 3 运行拆表脚本

下面给出最小可复现的 Python 3 脚本,仅依赖标准库,按「日期」列拆成独立 CSV,保留原文、时间、发送者三列。

#!/usr/bin/env python3
# line_split_csv.py
import re, csv, os, pathlib

IN_FILE  = r"output.txt"
OUT_DIR  = r"csv_by_date"
os.makedirs(OUT_DIR, exist_ok=True)

DATE_RE   = re.compile(r"^(\d{4}/\d{2}/\d{2})")
MSG_RE    = re.compile(r"^(\d{4}/\d{2}/\d{2} \d{2}:\d{2})	([^	]+)	(.*)")

cur_date, writer, f = None, None, None

with open(IN_FILE, encoding="utf-8") as raw:
    for line in raw:
        line = line.rstrip("\
")
        if not line:
            continue
        m = MSG_RE.match(line)
        if not m:
            continue  # 跳过系统提示
        dt, sender, body = m.groups()
        date = dt.split()[0]
        if date != cur_date:
            if f: f.close()
            cur_date = date
            f = open(os.path.join(OUT_DIR, f"{date}.csv"), "w", newline="", encoding="utf-8")
            writer = csv.writer(f)
            writer.writerow(["datetime", "sender", "message"])
        writer.writerow([dt, sender, body])
if f: f.close()
print("done →", OUT_DIR)

运行后将在 csv_by_date 文件夹内生成 2026-03-24.csv 等文件,可直接用 Excel 或 Pandas 读取。

平台差异与最短入口对照表

平台 最短路径 是否支持日期筛选 备注
Windows Desktop ⋯ → 其他设置 → 导出聊天记录 可导出全部或最近 100/1000 条
macOS Desktop 同 Windows 文件编码同为 UTF-16LE
iOS 设置 → 备份 → 备份至 iCloud 加密文件,需整机还原
Android 设置 → 备份 → Google Drive 同上

例外与取舍:哪些记录无法进 CSV

  • 加密媒体:图片、语音、视频、3D 贴纸仅保存为「[图片]」占位符,二进制需另行从手机加密备份解密。
  • 撤回消息:一旦发送者撤回,TXT 里直接消失,CSV 也不会留下痕迹。
  • 限时聊天(Letter Sealing+限时截图屏蔽):若对方启用「阅后即焚」,桌面端无法拉取原文,导出结果为空。
  • 系统提示如「××加入了群聊」因缺少时间戳,被脚本自动丢弃。

工作假设

若你需要审计合规,必须提前关闭「允许撤回」与「限时聊天」;否则 CSV 将缺失关键证据链。验证方法:在测试群发送后立即撤回,再执行导出,可观测占位符消失。

例外与取舍:哪些记录无法进 CSV
例外与取舍:哪些记录无法进 CSV

与第三方归档机器人的协同边界

市面上存在「第三方归档机器人」通过 OAuth 拉取 webhook 事件并写成 CSV。此方案看似自动化,但

  1. 需要把群设为「公开」并暴露 webhook URL,违反最小权限原则
  2. LINE 官方在 14.8.0 服务条款中新增「禁止非授权日志存储」条款,经验性观察:2026 年 3 月已有 3 个日语归档 Bot 被停用接口。

因此,企业合规场景建议优先使用桌面端 TXT+本地脚本,避免云端中转带来的数据出境风险。

故障排查:日期错位、乱码、重复行

现象:CSV 里日期跳跃到 1970

原因:TXT 里混有「日期行」与「消息行」两种格式,脚本只认「年月日 时分」整行正则。处置:在脚本前加 print(repr(line)) 调样,确认缺失格式后手动补正则。

现象:Excel 打开日文显示菱形

原因:Excel 默认 ANSI。处置:数据→自文本→选择「65001: UTF-8」。

现象:同一条消息出现两次

原因:桌面端导出时勾选了「包含媒体」,导致后续又导一次。处置:删除旧 TXT 重新导出,并确保媒体选项关闭。

适用/不适用场景清单

场景 是否推荐 理由
日更 200 条的客服群,月末出报告 ✅ 推荐 数据量中等,脚本可在 10 秒内完成拆分
10 万订阅的语音频道文字旁路 ❌ 不推荐 TXT 上限约 2 万条,导出会截断
金融群需留痕 7 年 ⚠️ 有条件 需关闭撤回+限时聊天,并额外备份媒体到 WORM 存储
个人留念,含 3D 动态贴纸 ❌ 不推荐 CSV 只能存占位符,失去动画意义

最佳实践 6 条检查表

  1. 导出前关闭「限时截图屏蔽」,防止原文缺位。
  2. 统一用桌面版 ≥8.4,避免手机端加密备份无法解析。
  3. TXT 先转 UTF-8 再喂脚本,减少 Excel 乱码。
  4. 脚本输出目录单独建文件夹,防止同名 CSV 被覆盖。
  5. 金融场景额外计算 SHA-256 并写入「hash清单.txt」,事后可校验篡改。
  6. 每季度核对 LINE 服务条款,确认「非授权日志存储」条款是否收紧。

FAQ(使用 FAQPage Schema)

导出 CSV 能否保留贴图?

不能。官方 TXT 仅输出「[贴图]」占位符,二进制需从手机加密备份还原,无法进入表格。

一次导出最多多少条?

经验性观察:Windows 版在 2 万条左右会提示「消息过多,仅导出最近 1 万条」。需分时段多次导出再合并。

脚本能否合并多个群的 TXT?

可以。先把各群 TXT 按群名重命名,再批量喂给脚本,输出时会在 CSV 文件名前保留群名前缀,避免冲突。

iOS 16 无法扫码登录桌面版怎么办?

关闭「隐私与安全→限定IP地址跟踪」后再扫码,若仍失败,换用移动数据而非 Wi-Fi。

CSV 里时间想改 24 制/12 制如何调?

脚本第 21 行 dt = dt.split()[0] 之前,用 datetime.strptime 先解析再格式化为任意字符串即可。

收尾:下一步行动建议

如果你只是偶尔做月度总结,按本文「桌面导出→脚本拆表」10 分钟即可拿到按日分片的 CSV;若面对金融级留痕,先关闭可撤回功能,再把 CSV 连同媒体哈希一起写进 WORM 存储,才能通过事后审计。LINE 官方短期内不会推出「一键分日期表格」,掌握本地脚本仍是性价比最高的解法——现在就打开桌面端,跑一遍导出,验证你的群是否超过 1 万条上限,再决定要不要分时段备份。

关于作者

line聊天官方团队 - LINE 团队成员,致力于为用户提供最佳的通讯体验。