如何从多个含JSON数据的文本文件中提取name与phone参数及对应值
批量提取JSON字段的可行方法
方法1:使用jq命令(Linux/macOS通用,最简方案)
jq是专门处理JSON的轻量级命令行工具,确认安装jq后,在所有目标文件所在目录执行对应命令即可:
- 直接输出结果:
jq '{phone: .data.phone, name: .data.name}' file1 file2 file3
- 导出为CSV文件方便后续使用:
echo "phone,name" > result.csv && for f in file*; do jq -r '[.data.phone, .data.name] | @csv' $f >> result.csv; done
说明:该方案执行速度最快,适合文件量较大的场景
方法2:使用Python脚本(跨平台通用,无需额外安装命令行工具)
在目标文件目录下新建extract.py,写入以下代码:
import json import glob # 匹配所有file开头的目标文件 for file_path in glob.glob("file*"): with open(file_path, 'r', encoding='utf-8') as f: try: json_data = json.load(f) phone = json_data['data']['phone'] name = json_data['data']['name'] print(f"文件:{file_path} | 手机号:{phone} | 姓名:{name}") # 如需写入本地文件可取消注释下方代码 # with open('result.txt', 'a', encoding='utf-8') as res: # res.write(f"{phone},{name}\n") except Exception as e: print(f"处理文件{file_path}出错:{e}")
执行命令运行脚本:
python extract.py
说明:兼容性最好,Windows、Linux、macOS都可以直接运行,也方便自定义后续处理逻辑
方法3:PowerShell命令(Windows原生支持,无需安装额外软件)
打开PowerShell进入目标文件目录,执行以下命令:
Get-ChildItem -Filter file* | ForEach-Object { $json = Get-Content $_.FullName | ConvertFrom-Json [PSCustomObject]@{ 文件名 = $_.Name 手机号 = $json.data.phone 姓名 = $json.data.name } } | Export-Csv -Path result.csv -NoTypeInformation -Encoding UTF8
说明:适合Windows用户不想安装额外环境的场景,结果直接导出为CSV文件
内容的提问来源于stack exchange,提问作者D - Lord
相关产品推荐
相关产品推荐

