簡體   English   中英

如何刪除節點中數組周圍的引號?

[英]how to remove quotation marks around array in node?

我處理了 python 中的數據並將文件保存為 JSON 格式。

但是,當我在 node.js 中使用 JSON 文件后遇到問題

JSON 文件如下所示。

{
    "title": "Christmas Eggnog",
    "ingredients": "['whites', 'yolks', 'sugar', 'rye', 'whiskey', 'brandy', 'rum', 'cream']",
    "id": "05zEpbSqcs9E0rcnCJWyZ9OgdH0MLby"
},

成分必須是一個普通數組,但是它是一個用引號括起來的數組。 最終導致無法按預期讀取此 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”,因為節點不理解"['whites', 'yolks', 'sugar', 'rye', 'whiskey', 'brandy', 'rum', 'cream']"是一個數組。 節點將其視為一個長字符串。

如何將此字符串轉換為普通數組?

編輯)

我的 python 代碼如下。

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 格式化程序。 https://csvjson.com/[![在此處輸入圖像描述] 1 ] 1

編輯)

這是 csv 文件鏈接

we.tl/t-Kw435qpNNd

看起來像這樣在此處輸入圖像描述

編輯)示例 csv 文本 這是示例 csv 文本。

標題,成分,id 聖誕蛋酒,“['whites', 'yolks', 'sugar', 'rye', 'whiskey', 'brandy', 'rum', 'cream']",05zEpbSqcs9E0rcnCJWyZ9OgdH0MLby "Veal, Carrot and Chestnut Ragoût ","['栗子','小牛肉','燉','肉','油','洋蔥','大蒜','葉子','鹽','雞湯','酒' , '胡蘿卜', '鼠尾草']",mF5SZmoqxF4WtIlhLRvzuKk.z6s7P2S 巧克力肉桂焦糖面包布丁,"['黃油', '奶油蛋卷', '質量', '面包', '面包皮', '雞蛋', '雞蛋'、'蛋黃'、'棕色'、'糖'、'奶油'、'牛奶'、'香草'、'肉桂'、'肉豆蔻'、'猶太鹽'、'巧克力'、'頂級']",oQV5D7cVbCFwmrDs3pBUv2y .AG0WV26 雪莉斯蒂爾頓和綠胡椒醬,“['stilton', 'cream cheese', 'peppercorns', 'brine', 'sherry']",Z9seBJWaB5NkSp4DQHDnCAUBTwov/1u Almond-Chocolate Macaroons,"['almonds', 'sugar ', '肉桂', '鹽', '雞蛋', '杏仁', '半甜', '巧克力']",bB3GxoAplVZeoX3fzWNWyeECtQFxw6G 白醬或調味醬,"['黃油', '面粉', '牛奶', '鹽','胡椒']",FHQAJvovVtPyKWlzgFEHgSUJsCM2Tj q

因為它是一個字符串,你需要去掉你不想要的壞位,然后將字符串的剩余部分轉換成一個數組

var list = "['whites', 'yolks', 'sugar', 'rye', 'whiskey', 'brandy', 'rum', 'cream']".replace(/[\[\]["',]/g,'').split(" ");

替換使用正則表達式刪除 " ', [ ] 字符,拆分將字符串通過剩余的空格分割並將其轉換為數組。

console.log(list);
0: "whites"
1: "yolks"
2: "sugar"
3: "rye"
4: "whiskey"
5: "brandy"
6: "rum"
7: "cream"
length: 8
__proto__: Array(0)

我同意 Thierry Lathuille 解決制片人的問題。 如果你想在這里修補它,我會將字符串解析為 JSON 並替換它:

data.forEach(r => {
    r.ingredients = JSON.parse(r.ingredients);
}

 const json = { "title": "Christmas Eggnog", "ingredients": "['whites', 'yolks', 'sugar', 'rye', 'whiskey', 'brandy', 'rum', 'cream']", "id": "05zEpbSqcs9E0rcnCJWyZ9OgdH0MLby" } const ingredients = json.ingredients.substr(1, json.ingredients.length -2) const ingredientsList = ingredients.split(', ').map(item => item.substr(1, item.length -2)) console.log(ingredientsList)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM