我有一个csv的文件夹:
Art.csv
Cars.csv
Food.csv
每个csv都有一个名为 words
我想遍历文件夹并使用列的内容,并使用标题以以下格式创建一些JSON:
{
"Art" : ['word 1', 'word 2'],
"Cars" : ['word 1'],
"Food" : ['word 1', 'word 2', 'word 3']
}
这是一些测试数据:
file_list <- list.files()
file_list <- c("Art.csv", "Cars.csv", "Food.csv")
test <- data.frame(words = c("Word 1", "Word 2"))
lapply(file_list, function(x) write.csv(test, x, row.names = F))
到目前为止,我已经得到:
files <- list.files(path="sec", pattern=".csv", recursive = F)
for(i in files){s <- read.csv(paste0("Z:/sec/phrases/",i), stringsAsFactors = F, strip.white = T)
s$words <- trim(s$words)
t <- as.vector(s$words)
t <- iconv(t, "UTF-8", "UTF-8", sub='')
t <- toJSON(t)
write(paste0("Z:/sec/json/",i,".json"))}
trim是我创建的函数,因为strip.white在循环中无法正常工作。
trim <- function (x) gsub("^\\s+|\\s+$", "", x)
上面的代码只是用JSON编写列,并将文本保存到文件夹中。
将名称从更改.csv.json
为.json
:
for(i in list.files("Z:/sec/json", full.names = T)){file.rename(from=i,to=sub(pattern=".csv.json",replacement=".json",i))}
可能有一种完全不同的方法会更好,而我更乐于接受。我大约有5000个文件。
编辑让我尝试,并使其更加清晰。
我设法创建的是一个包含json文件的文件夹,例如:
Art.json
Cars.json
Food.json
Art.json
好像:
['word 1', 'word 2']
现在,我想做的就是将所有这些文件合并为一个大json,例如:
{
"Art" : ['word 1', 'word 2'],
"Cars" : ['word 1'],
"Food" : ['word 1', 'word 2', 'word 3']
}
您能否在下一次添加一个示例,该示例可以像我在代码中一样重复使用。我找到了以下解决方案,希望它对您有用:
file_list <- list.files()
file_list <- c("Art.csv", "Cars.csv", "Food.csv")
# Make an example that can be used
test <- data.frame(words = c("Word 1", "Word 2"))
lapply(file_list, function(x) write.csv(test, x, row.names = F))
list_df <-lapply(file_list, function(x) read.csv(x))
one_list <- lapply(list_df, function(x) x$words)
names(one_list) <- gsub(".csv","",file_list)
toJSON(one_list)
> toJSON(one_list)
[1] "{\"Art\":[\"Word 1\",\"Word 2\"],\"Cars\":[\"Word 1\",\"Word 2\"],\"Food\":[\"Word 1\",\"Word 2\"]}"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句