test.csv文件有:
"Id","UserName","Age"
"01","Sam Smith","33"
"02","Fred Frankly","44"
"03","Zachary Zupers","55"
意外输出:作为Json文件
[{"id":01,"User Name": " Sam Smith", "Age":"33"},
{"id":03,"User Name": " Fred Frankly", "Age":"44"}
{"id":03,"User Name": "Aachary Zupers", "Age":"55"}
]
我尝试使用node.js
解决这个问题var fs = require("fs");
var data = fs.readFileSync('test.csv');
var stringData=data.toString();
console.log(stringData);
var arrayOne= stringData.split('\r\n');
var header=arrayOne[0].split(',');
var noOfRow=arrayOne.length;
var noOfCol=header.length;
var jArray=[];
var i=0,j=0;
for (i = 1; i < noOfRow-1; i++) {
for (j = 0; j< noOfCol; j++) {
var myNewLine=arrayOne[i].split(',');
jArray.push( '{'+header[j]+':'+myNewLine[j]+'}');
};
};
console.log( jArray);
这是我运行上面代码时得到的输出: output Image 在上面的代码中,我刚刚尝试在json脚本中显示。但如果你能做到这一点。请提供代码以将显示的输出转换为.json文件。
请帮助我,我将感激你。
答案 0 :(得分:1)
正如ShanShan所提到的,你可以在一个真实的项目中利用一个外部库,但是我已经对你的代码进行了一些修改,如果你这样做是为了学习,你应该做你想要的。
我试图保持代码大致相同。有两个主要的变化。首先,不是使用内容构造一个字符串,而是创建一个对象,该对象存储您对每行感兴趣的数据。因为此对象位于每行级别,所以它位于处理行的外部循环中。其次,我正在删除标题和值文本(引号)的第一个和最后一个字符。因为您将CSV解释为字符串并基于此进行拆分,所以它仍然包含引号。在现实世界中,您可能希望使用正则表达式或替换函数来提取它,但我尝试保持简单,因此它使用子字符串。
以下代码:
var fs = require("fs");
var data = fs.readFileSync('test.csv');
var stringData=data.toString();
console.log(stringData);
var arrayOne= stringData.split('\r\n');
var header=arrayOne[0].split(',');
var noOfRow=arrayOne.length;
var noOfCol=header.length;
var jArray=[];
var i=0,j=0;
for (i = 1; i < noOfRow-1; i++) {
var obj = {};
var myNewLine=arrayOne[i].split(',');
for (j = 0; j< noOfCol; j++) {
var headerText = header[j].substring(1,header[j].length-1);
var valueText = myNewLine[j].substring(1,myNewLine[j].length-1);
obj[headerText] = valueText;
};
jArray.push(obj);
};
console.log( jArray);
答案 1 :(得分:1)
试试这个:
...
var jArray=[];
var i=0,j=0;
for (i = 1; i < noOfRow-1; i++) {
for (j = 0; j< noOfCol; j++) {
var myNewLine=arrayOne[i].split(',');
jArray.push(JSON.parse( '{'+header[j]+':'+myNewLine[j]+'}'));
};
};
fs.writeFile('test.json', JSON.stringify(jArray), function (err) {
if (err) return console.log(err);
console.log('ok');
});
console.log( jArray);
答案 2 :(得分:1)
这应该有效
def quadratic_combinations(df):
rng = range(len(df.columns))
return pd.concat([df.iloc[:, i:].mul(df.iloc[:, i], axis=0) for i in rng],
axis=1, keys=df.columns)
df_quad = quadratic_combinations(df)
print df_quad
C1 C2 C3 C4
C1 C2 C3 C4 C2 C3 C4 C3 C4 C4
0 64 0 40 48 0 0 0 25 30 36
1 16 20 12 20 25 15 25 9 15 25
答案 3 :(得分:0)
如果你不想重新发明轮子,
给出一个csv
NAME, AGE
Daffy Duck, 24
Bugs Bunny, 22
你可以这样做
var csv = require('csv-parser')
var fs = require('fs')
fs.createReadStream('some-csv-file.csv')
.pipe(csv())
.on('data', function (data) {
console.log('Name: %s Age: %s', data.NAME, data.AGE)
})
查看更多here