使用双引号从R中的json字符串中提取文本

时间:2017-09-28 15:26:46

标签: r regex string-matching stringr

我正在尝试提取JSON对象的正文字符串中的内容。问题是我无法将双引号传递给并提取所有文本信息。在这种情况下,我需要文本为"文档中有关于图书馆功能链接的拼写错误,这在浏览文档时非常烦人!"。我把我的代码放在这里,如果有人可以建议如何传递双引号而不是(",)并且可以达到这个贪婪的量词,(这是我一直在使用的表达式),

body<- str_extract(json_file , 'body[^,]*\\s*'). 

谢谢

library(stringr)
json_file<- '{ "_id" : ObjectId( "539163d7bd350003" ), "login" :    "vui", "id" : 369607, "avatar_url" : "https://avatars.mashupsusercontent.com/u/369607?", "gravatar_id" : "df8897ffebe16c5b0cd690925c63e190", "body":"There is a typo error in documentation regarding a link to a librarys function, which is quite irritating while browsing the documentation!","url" : "https://api.mashups.com/users/vui", "html_url" : "https://mashups.com/vui", "followers_url" : "https://api.mashups.com/users/vui/followers", "following_url" : "https://api.mashups.com/users/vui/following{/other_user}", "gists_url" : "https://api.mashups.com/users/vui/gists{/gist_id}", "starred_url" : "https://api.mashups.com/users/vui/starred{/owner}{/repo}", "subscriptions_url" : "https://api.mashups.com/users/vui/subscriptions", "organizations_url" : "https://api.mashups.com/users/vui/orgs", "repos_url" : "https://api.mashups.com/users/vui/repos", "events_url" : "https://api.mashups.com/users/vui/events{/privacy}", "received_events_url" : "https://api.mashups.com/users/vui/received_events", "type" : "User", "site_admin" : false, "org" : "amurath"}'
body<- str_extract(json_file , 'body[^,]*\\s*')

body

2 个答案:

答案 0 :(得分:1)

这对我有用..

  library(stringr)
  body <- str_extract(json_file, 'body":"[^"]*')

答案 1 :(得分:0)

您的输入有一个单一的,格式错误的示例,因此我不相信这会对其余数据起作用。但是,在此数据上获取所需内容的方法是:

gsub('.*?body.*?:\"(.*?)\",\"\\w+\"\\s*:.*', "\\1", json_file)
  

[1]“对于像我这样的鲸鱼喷水用户,/重装不是一个选择   因为它崩溃了spout框架。此外,重新加载需要一段时间。一世   我想知道你是否可以实现一个命令来重新加载   “配置”。\ r \ n这就是全部,有一个快乐的新   新年快乐!\ r \ n-asleeponduty“

编辑:我做了一个小修改。新版本适用于您的旧示例和新示例。

gsub('.*?body.*?:\"(.*?)\",\"\\w+\"\\s*:.*', "\\1", json_file)
  

[1]“有关链接的文档中存在拼写错误   图书馆功能,浏览时非常烦人   文档!“