我想用Typescript读取CSV文件
这是我的代码:
export default class Playlist{
public playlistId: Number = 0;
public playlistName: string = '';
constructor(line:string){
const item = line.split(',')
this.playlistId = +item[0];
this.playlistName = item[1];
}
}
<标题>fs.readFile('.\csv\playlist.csv', 'utf8',(err, res) => {
if(err){
console.error('YEET');
return;
}else{
const playlists = res.split('n').slice(1).map((x:string) => new Playlist(x))
console.log(playlists)
}
})
这是CSV数据:
"1","Music"
"2","Movies"
"3","TV Shows"
"4","Audiobooks"
这是我得到的播放列表对象:
Playlist { playlistId: NaN, playlistName: '"Music"r' },
正如你所看到的playlistd,我得到NaN,但我不知道为什么,因为我解析它正确的数字。此外,播放列表的名称也不一定是一个奇怪的格式。
标题>这是因为您在每个值周围都有语音标记。使用以下命令修复Playlist
类:
固定播放列表类
export default class Playlist {
public playlistId: Number = 0;
public playlistName: string = "";
constructor(line: string) {
const item = line.split(/"|\r/).join("").split(",");
this.playlistId = Number(item[0]); // or keep as =+ item[0]
this.playlistName = item[1];
}
}
或者,从CSV文件中删除引号。
修复播放列表CSV
1,Music
2,Movies
3,TV Shows
4,Audiobooks
如果你看到你的playlistName,它包括一对额外的双引号'"Music"r'
。
在您解析item[0]
之前,它也应该看起来像'"1"'
和+'"2"'
,当您解析它时预计是NaN。
一个简单的修复方法是将所有引号替换为空字符,有效地将解析更改为+item[0].replace(/"/g, "")
不放;在每个值之后?只是个问题?