使用Python Pandas将JSON文本文件转Excel时遇TypeError问题求助
JSON Lines文件转Excel的TypeError问题解决
问题场景
你的json_test.txt是JSON Lines格式(每行一个独立JSON对象),初始代码运行时触发TypeError: the JSON object must be str, bytes or bytearray错误。
错误原因分析
- 格式不匹配:文件是每行一个JSON对象,不是标准的JSON数组,无法用
json.load()直接整体解析。 - 参数类型错误:
readlines()返回字符串列表,但json.load()仅接受文件对象、字符串、字节类数据,不能处理列表。 - 代码冗余/错误:
with块会自动关闭文件,无需手动调用f.close();import pathlib as Path是错误导入方式且未用到该模块;全局变量df_json在函数内被重新定义为局部变量,逻辑无效。
高效解决方法
方法一:Pandas直接读取(最简洁)
Pandas原生支持JSON Lines格式,一行代码即可完成读取与转换:
import pandas as pd def main(): # 读取JSON Lines文件,lines=True表示每行一个JSON对象 df = pd.read_json("json_test.txt", lines=True) # 导出为Excel,index=False取消行索引 df.to_excel('json_to_excel.xlsx', index=False) if __name__ == '__main__': main()
方法二:手动逐行解析(适合自定义处理)
如果需要对每行JSON做额外逻辑处理,可手动逐行解析:
import json import pandas as pd def main(): data_list = [] with open("json_test.txt", 'r') as f: for line in f: # 跳过空行,避免解析错误 cleaned_line = line.strip() if cleaned_line: # 解析单行JSON字符串 data = json.loads(cleaned_line) data_list.append(data) # 转换为DataFrame并导出 pd.DataFrame(data_list).to_excel('json_to_excel.xlsx', index=False) if __name__ == '__main__': main()
内容的提问来源于stack exchange,提问作者D Chase
相关产品推荐
相关产品推荐

