在分配字符串之前转义 R 中的引号
Escape quotes in R before assigning a string
我正在尝试加载 JSON 文件并在 R 中进行一些分析。
JSON 文件包含如下部分:
'{"property":"blabla \"some goofy name\" more blabla"}'
这意味着里面有一对双引号 属性 的字符串值。这应该是有效的 JSON(或不是?)。
问题是,如果我尝试用 jsonlite 或任何其他库解析它,我需要将它分配给 R 中的字符串变量。像这样:
a = '{"property":"blabla \"some goofy name\" more blabla"}'
但是,如果我输入 a
并按回车键,我会返回:
[1] "{\"property\":\"blabla \"some goofy name\" more blabla\"}"
这意味着已经存在的 \"
个实例现在等于实际的 "
个实例,所以我什至无法用正则表达式替换它们。如果我将其提供给任何 JSON 解析库,则会出现无效字符错误等
有什么方法可以在 R 认为它们与普通 "
相同之前 'catch' 那些令人讨厌的 \"
实例,以便我可以消除 \"
并继续JSON 解析?
与相似的区别issue is that the inner quotes are already escaped forming a valid JSON. My ultimate challenge is to parse this JSON: http://next.openspending.org/api/3/cubes/ba94aabb80080745688ad38ccad9bfea:at-austria-at11-burgenland/facts?pagesize=30
OP 更新后的更新答案
我想我可能还没有 100% 理解你想要完成的事情,所以如果这不是你想要的输出,请告诉我。我没有处理您文件中的换行符,因为这似乎不相关。如您所述,您的文件包含包含 "\"Bienenkorb\"" 的字符串。
url <- "http://next.openspending.org/api/3/cubes/ba94aabb80080745688ad38ccad9bfea:at-austria-at11-burgenland/facts?pagesize=30"
parsed <- jsonlite::fromJSON(url)
print(parsed$data$activity_project_id.project_name[3])
#[1] "Neugestaltung und\nModernisierung des\nRestaurants \"Bienenkorb\""
cat(parsed$data$activity_project_id.project_name[3])
#Neugestaltung und
#Modernisierung des
#Restaurants "Bienenkorb"
如果你想把它赋值给一个字符串然后解析它,你可以这样做s <- readLines(url); parsed <- jsonlite::fromJSON(s)
.
我正在尝试加载 JSON 文件并在 R 中进行一些分析。
JSON 文件包含如下部分:
'{"property":"blabla \"some goofy name\" more blabla"}'
这意味着里面有一对双引号 属性 的字符串值。这应该是有效的 JSON(或不是?)。
问题是,如果我尝试用 jsonlite 或任何其他库解析它,我需要将它分配给 R 中的字符串变量。像这样:
a = '{"property":"blabla \"some goofy name\" more blabla"}'
但是,如果我输入 a
并按回车键,我会返回:
[1] "{\"property\":\"blabla \"some goofy name\" more blabla\"}"
这意味着已经存在的 \"
个实例现在等于实际的 "
个实例,所以我什至无法用正则表达式替换它们。如果我将其提供给任何 JSON 解析库,则会出现无效字符错误等
有什么方法可以在 R 认为它们与普通 "
相同之前 'catch' 那些令人讨厌的 \"
实例,以便我可以消除 \"
并继续JSON 解析?
与相似的区别issue is that the inner quotes are already escaped forming a valid JSON. My ultimate challenge is to parse this JSON: http://next.openspending.org/api/3/cubes/ba94aabb80080745688ad38ccad9bfea:at-austria-at11-burgenland/facts?pagesize=30
OP 更新后的更新答案
我想我可能还没有 100% 理解你想要完成的事情,所以如果这不是你想要的输出,请告诉我。我没有处理您文件中的换行符,因为这似乎不相关。如您所述,您的文件包含包含 "\"Bienenkorb\"" 的字符串。
url <- "http://next.openspending.org/api/3/cubes/ba94aabb80080745688ad38ccad9bfea:at-austria-at11-burgenland/facts?pagesize=30"
parsed <- jsonlite::fromJSON(url)
print(parsed$data$activity_project_id.project_name[3])
#[1] "Neugestaltung und\nModernisierung des\nRestaurants \"Bienenkorb\""
cat(parsed$data$activity_project_id.project_name[3])
#Neugestaltung und
#Modernisierung des
#Restaurants "Bienenkorb"
如果你想把它赋值给一个字符串然后解析它,你可以这样做s <- readLines(url); parsed <- jsonlite::fromJSON(s)
.