2017-09-28 4 views
0

J'essaie d'extraire le contenu de la chaîne de corps de l'objet JSON. Le problème est que je suis incapable de transmettre les doubles guillemets à et d'extraire toutes les informations textuelles. Dans ce cas, j'ai besoin du texte comme "Il y a une faute de frappe dans la documentation concernant un lien vers une fonction de bibliothèque, ce qui est assez énervant en parcourant la documentation!". J'ai mis mon code ici et si quelqu'un peut suggérer comment passer des guillemets doubles au lieu de (») et peut atteindre à ce quantificateur gourmand, (est l'expression ici que je l'ai utilisé),Extraire du texte à partir d'une chaîne json dans R avec des guillemets

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

Merci

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 
+1

La chaîne est pas un objet JSON valide. Donc, vous avez une chaîne qui est encore en quelque sorte JSONish. À moins que vous ne puissiez pas définir, ce que signifie JSONish, n'importe quel modèle de citation peut être valide à vos yeux. –

+0

Je mets un objet JSON validé, laissez-moi savoir si vous avez des idées! Merci, Cordialement! – user3570187

Répondre

0

C'est ce qui a fonctionné pour moi ..

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

Votre entrée a un seul exemple mal formé, donc je peu de confiance que cela va travailler sur le reste de vos données. Cependant, une façon d'obtenir ce que vous voulez sur ces données est- :

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

[1] "Pour les utilisateurs de bec tels que moi-même,/reload n'est pas une option car elle bloque la structure du bec. De plus, les rechargements prennent du temps. Je me demandais si vous pouviez mettre en œuvre une commande pour recharger le \ "configurations \" \ r \ nqui est tout, ont une bonne et heureuse Année \ r \ n-asleeponduty »

Edit.: je fait une modification mineure. la nouvelle version fonctionne sur votre ancien exemple et le nouveau.

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

[1] « Il y a une erreur de typo dans la documentation au sujet d'un lien vers une fonction de librarys, ce qui est assez irritant alors que mon frère wsing la documentation ! »

+0

J'ai fait quelques modifications pour un JSON valide s'il vous plaît suggérer vos pensées – user3570187