Javascript 如何删除节点中数组周围的引号?
我用python处理了一个数据,并以JSON格式保存了该文件 但是,在node.js中使用JSON文件时,在获取JSON文件后遇到了一个问题 那是 JSON文件如下所示Javascript 如何删除节点中数组周围的引号?,javascript,node.js,data-visualization,Javascript,Node.js,Data Visualization,我用python处理了一个数据,并以JSON格式保存了该文件 但是,在node.js中使用JSON文件时,在获取JSON文件后遇到了一个问题 那是 JSON文件如下所示 { "title": "Christmas Eggnog", "ingredients": "['whites', 'yolks', 'sugar', 'rye', 'whiskey', 'brandy', 'rum', 'cream']&qu
{
"title": "Christmas Eggnog",
"ingredients": "['whites', 'yolks', 'sugar', 'rye', 'whiskey', 'brandy', 'rum', 'cream']",
"id": "05zEpbSqcs9E0rcnCJWyZ9OgdH0MLby"
},
import pandas as pd
df = pd.read_csv('./test.csv')
ingredients = df['ingredients']
for i in range(len(ingredients)):
ingredients[i]=str(ingredients[i])[1:-1]
ingredients
df['ingredients']=ingredients
df.to_csv ('./datatest.csv', index = False, header=True)
配料必须是一个普通数组,但它是一个用引号括起来的数组。
它最终使我们无法按预期读取这个json文件
{
"title": "Christmas Eggnog",
"ingredients": ["whites", "yolks", "sugar", "rye", "whiskey", "brandy", "rum", "cream"],
"id": "05zEpbSqcs9E0rcnCJWyZ9OgdH0MLby"
},
我想得到如下所示的日志值。当我在节点中读取这个JSON文件时
const fs = require('fs');
let predata = fs.readFileSync('./data/testonce.json')
let data = JSON.parse(predata)
let newData = [];
data.forEach((d) => {
newData.push((d) => {
let targetarray = d.ingredients.split(',')
return {...d, ingredients: targetarray }
})
})
console.log(newData[0])
//"whites"
我无法获取字符串“white”,因为node不理解
“[‘白’、‘蛋黄’、‘糖’、‘黑麦’、‘威士忌’、‘白兰地’、‘朗姆酒’、‘奶油’]”是一个数组。
节点将其视为一个长字符串
如何将此字符串转换为普通数组
(编辑)
我的python代码如下所示
{
"title": "Christmas Eggnog",
"ingredients": "['whites', 'yolks', 'sugar', 'rye', 'whiskey', 'brandy', 'rum', 'cream']",
"id": "05zEpbSqcs9E0rcnCJWyZ9OgdH0MLby"
},
import pandas as pd
df = pd.read_csv('./test.csv')
ingredients = df['ingredients']
for i in range(len(ingredients)):
ingredients[i]=str(ingredients[i])[1:-1]
ingredients
df['ingredients']=ingredients
df.to_csv ('./datatest.csv', index = False, header=True)
在此之后,我在这个网站上使用了csv->json格式化程序。
图片描述在此]]
(编辑)
这是csv文件链接
we.tl/t-KW435QPND
看起来像这样
编辑)示例csv文本
这是示例csv文本
标题、成分、id
圣诞蛋酒,“[‘白’、‘蛋黄’、‘糖’、‘黑麦’、‘威士忌’、‘白兰地’、‘朗姆酒’、‘奶油’””,05zEpbSqcs9E0rcnCJWyZ9OgdH0MLby
“小牛肉、胡萝卜和栗子拉果”、“[‘栗子’、‘小牛肉’、‘炖肉’、‘肉’、‘油’、‘洋葱’、‘大蒜’、‘叶’、‘盐’、‘鸡汤’、‘葡萄酒’、‘胡萝卜’、‘鼠尾草’”),mF5SZmoqxF4WtIlhLRvzuKk.z6s7P2S
巧克力肉桂焦糖面包布丁,“[‘黄油’、‘奶油干酪’、‘优质’、‘面包’、‘面包皮’、‘鸡蛋’、‘蛋黄’、‘棕色’、‘糖’、‘奶油’、‘牛奶’、‘香草’、‘肉桂’、‘肉豆蔻’、‘犹太食盐’、‘巧克力’、‘顶级’”,oQV5D7cVbCFwmrDs3pBUv2y.AG0WV26
雪莉史迪尔顿和青椒玉米酱,“[‘史迪尔顿’、‘奶油奶酪’、‘胡椒’、‘盐水’、‘雪莉’”,Z9SEBJWAB5NKSP4DQHDNCAUBTOWV/1u
杏仁巧克力杏仁饼,“[‘杏仁’、‘糖’、‘肉桂’、‘盐’、‘蛋’、‘杏仁’、‘半甜’、‘巧克力’””,BB3GxOaplvzeox3FzWnWyectQFxW6G
白沙司或贝克汉姆沙司,“[‘黄油’、‘面粉’、‘牛奶’、‘盐’、‘胡椒’”,FHQAJvovVtPyKWlzgFEHgSUJsCM2Tjq我同意蒂埃里·拉特维尔解决生产商的问题。如果您想在这里修补它,我会将字符串解析为JSON并替换它:
data.forEach(r => {
r.ingredients = JSON.parse(r.ingredients);
}
因为它是一个字符串,所以需要去掉不需要的坏位,然后将字符串的剩余部分转换为数组
var list = "['whites', 'yolks', 'sugar', 'rye', 'whiskey', 'brandy', 'rum', 'cream']".replace(/[\[\]["',]/g,'').split(" ");
replace使用正则表达式删除“'”、[]个字符,拆分将字符串按剩余的空格切分,并将其转换为数组
console.log(list);
0: "whites"
1: "yolks"
2: "sugar"
3: "rye"
4: "whiskey"
5: "brandy"
6: "rum"
7: "cream"
length: 8
__proto__: Array(0)
const json={
“标题”:“圣诞蛋酒”,
“配料”:“[‘白’、‘蛋黄’、‘糖’、‘黑麦’、‘威士忌’、‘白兰地’、‘朗姆酒’、‘奶油’”,
“id”:“05zEpbSqcs9E0rcnCJWyZ9OgdH0MLby”
}
const-components=json.components.substr(1,json.components.length-2)
const ingredientsList=components.split(',').map(item=>item.substr(1,item.length-2))
console.log(IngreditsList)
请添加生成JSON的python代码。这是否回答了您的问题?真正的问题在于创建此“错误”JSON的代码,因此这是需要更正的部分。@LelioFaieta No.@KrishnaChaurasia我添加了我的python代码,谢谢