【问题标题】:Removing a string using regular expression with stringr使用带有 stringr 的正则表达式删除字符串
【发布时间】:2015-06-22 18:44:21
【问题描述】:

我正在尝试使用 str_replace_all 函数删除以下 json 中的 union 一词。我尝试了一些正则表达式,但它们没有用。关于如何摆脱完整的“联合”字符串的任何建议。这是代码。

 library(jsonlite)

 json<- '{"open_issues":0,"union":{"avatar_url":"https://secure.gravatar.com/avatar/ed73cf7f24c091318e507d167c7b3456?d=https://a248.e.akamai.net/assets.mashups.com%2Fimages%2Fgravatars%2Fgravatar-orgs.png","gravatar_id":"ed73cf7f24c091318e507d167c7b3456","id":1556245,"login":"Toolpark","url":"https://api.mashups.com/users/Toolpark"},"owner":{"avatar_url":"https://secure.gravatar.com/avatar/ed73cf7f24c091318e507d167c7b3456?d=https://a248.e.akamai.net/assets.mashups.com%2Fimages%2Fgravatars%2Fgravatar-orgs.png","gravatar_id":"ed73cf7f24c091318e507d167c7b3456","id":1556245,"login":"Toolpark","url":"https://api.mashups.com/users/Toolpark"},"private":false,"pushed_at":"2012-07-12T11:43:31Z","size":964,"ssh_url":"vit@mashups.com:Toolpark/irma.vit","svn_url":"https://mashups.com/Toolpark/irma","updated_at":"2012-07-12T11:43:31Z","url":"https://api.mashups.com/repos/Toolpark/irma","watchers":2}'

str_replace_all(json,"union[^}]*}\s*, "")
json <- fromJSON(json)
Error: '\s' is an unrecognized escape in character string starting ""union[^}]*}\s"

我试图摆脱这个字符串,包括最后的昏迷:

"union":{"avatar_url":"https://secure.gravatar.com/avatar/ed73cf7f24c091318e507d167c7b3456?d=https://a248.e.akamai.net/assets.mashups.com%2Fimages%2Fgravatars%2Fgravatar-orgs.png","gravatar_id":"ed73cf7f24c091318e507d167c7b3456","id":1556245,"login":"Toolpark","url":"https://api.mashups.com/users/Toolpark"},

有什么建议吗?

【问题讨论】:

  • 您似乎在 str_replace_all 行上缺少了一些引号
  • 是的,我试过了!它没有通过
  • 试试str_replace_all(json, '"union"[^}]*\\s*,', "")。请记住,这可能不适用于去除}, 之间的换行符(这通常不是一个问题)。还要记住,如果}union 字符串中,它也不会像你期望的那样工作。解析 JSON 然后删除 union 属性会更有意义。
  • 也许我错过了一些东西,但是,你为什么不cat(gsub("union", "", json))
  • 我也没工作!!

标签: regex r stringr jsonlite


【解决方案1】:

如果我猜对了,您打算从 json 行中删除“union”元素。那么,为什么不使用 fromJSON 函数将该行更改为 json,然后尝试删除 union 元素。以下代码为您生成一个没有 union

的列表
json1 <- ("your json line") 
my_list<- fromJSON(json1)   #convert into json format which gives you a list of elements
my_list["union"]<- NULL   #delete the union element
print(my_list)

【讨论】:

  • 我有一个巨大的 json 文件,很难复制到 .R 文件中,我正在寻找一些替代解决方案。请注意,我没有有效的 json 文件,我需要将其变为有效的 json 并执行操作!非常感谢!
【解决方案2】:

您一直在使用语法错误的正则表达式。使用以下内容:

str_replace_all(json, "\"union[^}]*}\\s*,", "")

DEMO

【讨论】:

  • 非常感谢!我收到此错误:stri_replace_all_regex 中的错误(字符串,模式,替换,vectorize_all = vec,:正则表达式模式中的语法错误。(U_REGEX_RULE_SYNTAX)。不确定这是否是 r 包问题。
猜你喜欢
  • 1970-01-01
  • 2022-01-18
  • 1970-01-01
  • 2011-05-13
  • 1970-01-01
  • 2014-11-07
  • 1970-01-01
  • 2018-01-26
  • 2015-10-12
相关资源
最近更新 更多