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

使用Pandas读取CSV中超长JSON文本列遇问题求助

问题解决办法

一、解决字符串打印截断问题

你设置了display.max_colwidth但打印仍截断,是因为直接打印Series对象时,pandas的输出逻辑会额外做截断处理。可以通过以下两种方式查看完整内容:

  • 直接访问单个元素的原始值:print(check.rmObject.iloc[0])(替换0为你要查看的行索引)
  • 用to_string()方法强制输出完整内容:print(check.rmObject.to_string())

二、修复JSON解析错误

你遇到的"Expecting property name enclosed in double quotes"错误,本质是原始字符串不符合JSON规范(JSON要求属性名必须用双引号,而你的数据可能用了单引号)。直接把单引号替换成*完全错误,应该用更合理的方式处理:

方案1:用ast.literal_eval解析类JSON字符串

如果你的rmObject内容是Python字典格式(用单引号包裹属性名/值),用ast.literal_eval比json.loads更合适,它能安全解析这种非标准JSON的字符串:

import ast

# 替换原来的json.loads语句
obj = ast.literal_eval(rm[i])

方案2:针对性替换单引号(需确保值内无单引号)

如果确定数据里只有属性名用了单引号,值里没有单引号,可以用正则匹配属性名的单引号替换成双引号:

import re
# 匹配类似 'key': 的格式,替换为 "key":
fixed_str = re.sub(r"'(\w+)':", r'"\1":', rm[i])
obj = json.loads(fixed_str)

修改后的完整示例代码

import pandas as pd
import ast

pd.set_option('display.max_colwidth', 100000)
check = pd.read_csv("check.txt")

# 查看完整内容示例
print(check.rmObject.iloc[0])

def create_dataframe(i):
    rm = check['rmObject']
    # 用ast解析类JSON字符串
    obj = ast.literal_eval(rm[i])
    
    # 这里补充你的后续处理代码,比如把obj转成DataFrame片段
    return pd.DataFrame([obj])

# 初始化result
result = pd.DataFrame()
for k in range(len(check)):
    result = pd.concat([result, create_dataframe(k)], ignore_index=True)

print(result)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 13:58:15