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

Python中存储含常见分隔符的字符串二维数组及JSON使用问题

新闻文章存储与检索方案解析

一、JSON序列化用法说明

你用json.dumps()的写法是完全正确的。JSON序列化后的字符串本身就会保留原数组的结构格式,比如你示例中的二维数组,序列化后会生成类似[["ID","URL","Title","Date","Article"],["1","2","3","4","5"]]的字符串,这是正常现象,并非用法错误。后续读取文件时,只需用json.load()就能将内容重新解析为Python的二维数组,完全不影响数据的还原。

二、高效检索的存储方案推荐

如果需要频繁按ID、标题等字段搜索,二维数组+JSON的方式效率偏低(每次搜索都要遍历整个数组),推荐以下两种更合适的方案:

1. 字典列表+JSON文件

将每篇文章改为字典结构,字段对应更清晰,搜索时可直接遍历列表匹配字段:

import json

# 采用字典列表存储单篇文章
scraped_articles = [
    {"ID": "1", "URL": "xxx", "Title": "新闻标题1", "Date": "2024-01-01", "Article": "文章内容..."},
    {"ID": "2", "URL": "yyy", "Title": "新闻标题2", "Date": "2024-01-02", "Article": "文章内容..."}
]

# 写入JSON文件,格式化输出便于查看
with open("articles.json", "w", encoding="utf-8") as f:
    json.dump(scraped_articles, f, ensure_ascii=False, indent=2)

# 按ID搜索示例函数
def search_by_id(article_list, target_id):
    for article in article_list:
        if article["ID"] == target_id:
            return article
    return None

# 读取文件后执行搜索
with open("articles.json", "r", encoding="utf-8") as f:
    articles = json.load(f)
target_article = search_by_id(articles, "1")

2. SQLite轻量级数据库(优先推荐)

当文章数量达到数千篇时,文件存储的搜索效率会明显不足,建议使用Python自带的SQLite,通过SQL语句实现快速检索:

import sqlite3

# 连接数据库(文件不存在则自动创建)
conn = sqlite3.connect("news_articles.db")
cursor = conn.cursor()

# 创建文章表结构
cursor.execute('''
CREATE TABLE IF NOT EXISTS articles (
    ID TEXT PRIMARY KEY,
    URL TEXT,
    Title TEXT,
    Date TEXT,
    Article TEXT
)
''')

# 插入单篇文章数据
article_data = ("1", "xxx", "新闻标题1", "2024-01-01", "文章内容...")
cursor.execute("INSERT INTO articles VALUES (?, ?, ?, ?, ?)", article_data)
conn.commit()

# 按ID精准搜索
cursor.execute("SELECT * FROM articles WHERE ID = ?", ("1",))
result = cursor.fetchone()

# 按标题模糊搜索
cursor.execute("SELECT * FROM articles WHERE Title LIKE ?", ("%关键词%",))
results = cursor.fetchall()

# 关闭数据库连接
conn.close()

SQLite支持复杂的查询逻辑,检索速度远快于文件遍历,同时数据安全性更高,不会因单个文件损坏丢失全部数据。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 02:18:24