功能定位:为什么官方不直接给你“分日期CSV”
在 LINE 里,聊天记录导出的核心入口只有两处:手机端「备份至 iCloud/Google Drive」与桌面端「导出文本文件(Talk 导出)」。前者加密后仅供整机还原,后者生成 .txt 且没有时间筛选器。官方设计初衷是“备份还原”而非“数据分析”,所以分日期 CSV 并不是第一方功能,只能先拿到原始文本,再用脚本二次拆表。
经验性观察:2026 年 2 月更新的 14.8.0 仍维持这一策略,社区呼声最高的「按日期导出表格」并未出现在路线图。若你负责社群运营或合规审计,就必须走“官方导出 + 外部转换”的折中路线。
前置条件与版本差异
移动端:只能整机加密备份
iOS 与 Android 均把聊天记录打包进 .zip 加密文件,密钥存在设备钥匙串,电脑端无法直接解压。因此手机端不能产生可读的 CSV,只能作为“中转仓库”。
桌面端:Windows/macOS 原生支持 TXT 导出
截至当前的最新版本,LINE Desktop ≥ 8.4 在任意聊天窗口右上角「⋯」→「其他设置」→「导出聊天记录」→ 选择「文本文件(.txt)」即可得到 UTF-16LE 编码的原始记录,含时间戳、发送者、消息内容,但不含图片、语音、贴图二进制。
提示
若你第一次使用桌面端,需先在手机「设置→LINE Labs→允许登录桌面版」开启权限,否则扫码后只能收消息,无法拉历史。
完整操作路径:从 TXT 到分日期 CSV
Step 1 获取原始 TXT
- 在桌面端打开目标聊天(1:1 或群均可)。
- 右上角「⋯」→「其他设置」→「导出聊天记录」。
- 取消勾选「包含图片等媒体」,加快导出速度。
- 保存路径建议新建文件夹,例如
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 将缺失关键证据链。验证方法:在测试群发送后立即撤回,再执行导出,可观测占位符消失。
与第三方归档机器人的协同边界
市面上存在「第三方归档机器人」通过 OAuth 拉取 webhook 事件并写成 CSV。此方案看似自动化,但
- 需要把群设为「公开」并暴露 webhook URL,违反最小权限原则;
- 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 条检查表
- 导出前关闭「限时截图屏蔽」,防止原文缺位。
- 统一用桌面版 ≥8.4,避免手机端加密备份无法解析。
- TXT 先转 UTF-8 再喂脚本,减少 Excel 乱码。
- 脚本输出目录单独建文件夹,防止同名 CSV 被覆盖。
- 金融场景额外计算 SHA-256 并写入「hash清单.txt」,事后可校验篡改。
- 每季度核对 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 万条上限,再决定要不要分时段备份。
