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

如何在Pandas中使用记录分隔符0x1E作为read_table分隔符

解决Pandas用0x1E作为记录分隔符的问题

你的问题出在read_table的默认行为上:它会先按换行符把文件拆成多行,再用指定的分隔符分割每行,但你的0x1E分隔符是在跨行的记录末尾,导致解析逻辑完全错位。

给你两种可行的解决办法:

方法一:先读取整个文件再处理

这种方式更直观,先把文件内容全部读进来,去掉换行符,再用0x1E分割成完整的记录,最后解析成DataFrame:

import pandas as pd
import json

# 读取文件并移除所有换行符
with open("separator.log", "r", encoding="utf-8") as f:
    content = f.read().replace("\n", "")

# 用0x1E分割记录,过滤掉空字符串
records = [rec for rec in content.split(chr(0x1E)) if rec]

# 解析每个JSON记录并生成DataFrame
df = pd.DataFrame([json.loads(rec) for rec in records])
print(df)

方法二:强制read_csv忽略换行符

利用read_csv(read_table本质是read_csv的封装)的lineterminator参数,指定一个文件中不存在的字符(比如\x00空字符),让它把整个文件当作一行,再用0x1E分割:

import pandas as pd
import json

# 读取文件,指定分隔符为0x1E,行终止符用不存在的空字符
df = pd.read_csv("separator.log", sep=chr(0x1E), engine="python", lineterminator="\x00", header=None)

# 移除每个字段里的换行符,解析JSON并展开成列
df = df[0].str.replace("\n", "").apply(json.loads).apply(pd.Series)
print(df)

为什么之前的尝试失败?

  • 用sep="[\x1E]"时,read_table先按换行拆行,每行里没有0x1E(分隔符在换行前),所以每行被当作一个字段,导致输出混乱;
  • 直接用sep=chr(0x1E)报错,是因为文件里的换行符被当作行终止符,每行内容里没有分隔符,解析时触发了语法错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 10:15:12