求助:解析含可变数量关键词的JSON文件并格式化输出
问题描述
需要解析一个包含可变数量关键词的JSON文件,典型示例如下:
{"keywords":[{"keyword":"halloween","score":0.9621220167107003}, {"keyword":"pumpkin","score":0.9527655356551675}, {"keyword":"nature","score":0.8530320061364176}, {"keyword":"animal","score":0.7936456829239327}],"status":"ok"}
要求将解析后的关键词格式化为:
,,,"halloween,pumpkin,nature,animal"
关键词条目数量在10到100之间浮动。尝试了以下批处理脚本但未解决问题:
setlocal enabledelayedexpansion set keywords="" rem Loop through each line of the keywords.txt file for /f "skip=1 tokens=2 delims={" %%b in (keywords.txt) do ( rem Extract the keyword from the current line set keyword=%%b set keyword=!keyword:"keyword":"! set keyword=!keyword:",score":! set keyword=!keyword:,! rem Add the keyword to the keywords variable set keywords=!keywords!,!keyword! )
解决方案
原脚本的关键词提取逻辑不严谨,且未处理最终输出格式,以下是修正后的批处理脚本:
@echo off setlocal enabledelayedexpansion set "keywords=" rem 精准定位包含关键词的行,提取目标内容 for /f "tokens=2 delims=:" %%a in ('findstr /C:"\"keyword\":\"" keywords.txt') do ( rem 清理关键词中的引号和多余逗号 set "temp=%%a" set "temp=!temp:"=!" set "temp=!temp:,=!" rem 拼接关键词,避免开头出现多余逗号 if defined keywords ( set "keywords=!keywords!,!temp!" ) else ( set "keywords=!temp!" ) ) rem 输出要求的格式内容 echo,,,"%keywords%" endlocal
关键改进说明:
- 用
findstr精准筛选含关键词的行,避免处理无关内容 - 通过分隔符截取+字符替换的组合,准确提取纯关键词文本
- 拼接时判断变量状态,避免开头多出无用逗号
- 直接输出符合要求的
,,,"关键词列表"格式
内容的提问来源于stack exchange,提问作者Serghei Starus
相关产品推荐
相关产品推荐

