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

基于Pandas处理Fyers Websocket数据:提取指定字段至DataFrame

解决方案

问题核心

你写入文件的是Python字典/列表字面量格式(使用单引号、遵循Python语法),而非标准JSON(强制双引号、严格格式规范),所以json.loads无法正常解析。

方案1:从源头写入标准JSON(推荐)

修改你的custom_message函数,用json.dumps把Python对象转换成标准JSON字符串再写入,后续可直接用JSON工具解析:

import json

def custom_message(msg):
    with open('NSE_JSON.csv', 'a') as g:
        json_str = json.dumps(msg)
        g.write(json_str + "\n")

用with语句自动管理文件关闭,比手动调用close()更安全可靠。

方案2:解析已有的Python字面量格式文件

如果已经生成了非标准格式的文件,使用ast.literal_eval安全解析每行的Python字面量,再提取目标字段生成DataFrame:

import ast
import pandas as pd

data = []
# 逐行读取并解析文件
with open('NSE_JSON.csv', 'r') as f:
    for line in f:
        line = line.strip()
        if not line:
            continue
        # 将行内容解析为Python列表/字典
        msg_data = ast.literal_eval(line)
        # 提取所需字段(注意msg_data是列表,取第一个元素)
        timestamp = msg_data[0]['timestamp']
        vol_traded_today = msg_data[0]['vol_traded_today']
        data.append({'timestamp': timestamp, 'vol_traded_today': vol_traded_today})

# 生成Pandas DataFrame
df = pd.DataFrame(data)
print(df.head())

为什么用ast.literal_eval?

它能安全解析Python的字面量结构(列表、字典、数字、字符串等),比原生eval()更安全,不会执行潜在恶意代码,完美适配当前的文件格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 04:22:20