我在使用JSON文件时遇到问题。我在AutoIt sciript中启动curl以从Web下载json文件,然后通过jq-win将其转换为csv格式
jq-win32 -r ".[]" -c class.json>class.txt
并且json的格式如下:
[
{
"id":"1083",
"name":"AAAAA",
"channelNumber":8,
"channelImage":""},
{
"id":"1084",
"name":"bbbbb",
"channelNumber":7,
"channelImage":""},
{
"id":"1088",
"name":"CCCCCC",
"channelNumber":131,
"channelImage":""},
{
"id":"1089",
"name":"DDD,DDD",
"channelNumber":132,
"channelImage":""},
]
jq-win之后,文件应变为:
{"id":"1083","name":"AAAAA","channelNumber":8,"channelImage":""}
{"id":"1084","name":"bbbbb","channelNumber":7,"channelImage":""}
{"id":"1088","name":"CCCCCC","channelNumber":131,"channelImage":""}
{"id":"1089","name":"DDD,DDD","channelNumber":132,"channelImage":""}
,然后csv文件将由AutoIt脚本进一步处理,并变成:
AAAAA,1083
bbbbb,1084
CCCCCC,1088
DDD,DDD,1089
json大约有300条记录,其中5〜6条记录包含逗号,例如DDD,DDD 因此,当我尝试通过_FileReadToArray读取csv文件时,DDD,DDD中的逗号会引起麻烦。
我的问题是:我可以使用jq-win替换字段中的逗号吗? (我尝试使用fart.exe,但它将替换不适合我的json文件中的所有逗号。) 非常感谢。
规定 林志峰
答案 0 :(得分:1)
我可以使用jq-win替换字段中的逗号吗?
是的。例如,使用gsub
就像使用awk的gsub(","; "|")
一样,例如
.[]
| .name |= gsub(",";";")
| [.[]]
| map(tostring)
| join(",")
如果您需要更多详细信息,请根据[mcve]提供更多详细信息。
使用给定的JSON输入,jq程序:
1083,AAAAA,8,
1084,bbbbb,7,
1088,CCCCCC,131,
1089,DDD;DDD,132,
产量:
import csv
selected_details = input("Enter student ID for details:\n")
with open('details.csv', 'rt') as f:
reader = csv.reader(f)
for line in reader:
if selected_details in line:
print(reader)
break