如何从JSON文本提取指定字段并生成带规则标注的目标输出
提取JSON文件指定字段并生成类CSV格式输出
使用jq工具(推荐,简单高效)
如果你的系统安装了jq(多数Linux/macOS可直接安装,Windows可通过Chocolatey等渠道安装),直接用以下命令处理你的JSON文件(假设文件名为data.txt):
# 处理带逗号分隔的JSON对象 sed 's/,$//' data.txt | jq -r '. | "\(.username) \(.votecount)\(if (.votecount | tonumber) < 25 then "D" else "" end)"'
命令说明:
sed 's/,$//':移除每个JSON对象末尾的多余逗号,确保jq能正确解析jq -r:输出原始字符串(不带JSON格式的引号)"\(.username) \(.votecount)\(...)":按要求拼接用户名、投票数字段,嵌入判断逻辑(.votecount | tonumber):将字符串类型的投票数转为数字,用于数值比较if ... then "D" else "" end:当投票数小于25时追加字母D,否则不添加后缀
使用Python脚本(跨平台通用)
如果没有jq,可编写简单Python脚本处理:
import json # 读取文件内容并清理格式 with open('data.txt', 'r', encoding='utf-8') as f: raw_content = f.read() # 移除JSON对象末尾的逗号,包裹为数组格式以符合JSON规范 clean_content = raw_content.replace(',\n}', '\n}') json_data = json.loads(f'[{clean_content}]') # 遍历每个对象生成目标格式输出 for item in json_data: username = item['username'] votecount = int(item['votecount']) suffix = 'D' if votecount < 25 else '' print(f"{username} {votecount}{suffix}")
脚本说明:
- 读取文件后清理JSON对象末尾的逗号,将所有独立对象包裹为JSON数组,方便解析
- 逐个解析每个JSON对象,提取用户名和投票数字段
- 根据投票数判断是否添加后缀D,按要求格式输出每行内容
内容的提问来源于stack exchange,提问作者Trevor Mason
相关产品推荐
相关产品推荐

