r - 从对象中提取特定字符串
问题描述
我目前正在做一个项目,我有一个列表,我只需要从整个对象中提取一个特定的字符串。
例如,其中一个对象的数据如下:
list(content = \"cskarelli haunting photo ritsopi panayiota reacts fire reach home village gouves evia konstant\", meta = list(author = character(0), datetimestamp = list(sec = 42.583606004715, min = 39, hour = 11, mday = 15, mon = 7, year = 121, wday = 0, yday = 226, isdst = 0), description = character(0), heading = character(0), id = character(0), language = character(0), origin = character(0)))"
目的是能够仅提取以下字符串:
cskarelli 令人难以忘怀的照片 ritsopi panayiota 反应火到达家乡村庄 gouves evia konstant
查看一些文档和试验/错误,使用 str_subset 或 str_sub 似乎是最优化的方法,但是,并不能呈现所需的结果。
例如,在使用时,str_subset(string, pattern)
我尝试运行代码,其中模式只查找字符串以 " 结尾并以 " 开头的位置,但我得到了引入 NA coersion 的错误。
如果有人对使用以“开头并以”结尾的模式提取特定数据的最佳方法有任何建议或想法,那就太好了。
谢谢
解决方案
这是您问题的字面答案:
string <- "list(content = \"cskarelli haunting photo ritsopi panayiota reacts fire reach home village gouves evia konstant\", meta = list(author = character(0), datetimestamp = list(sec = 42.583606004715, min = 39, hour = 11, mday = 15, mon = 7, year = 121, wday = 0, yday = 226, isdst = 0), description = character(0), heading = character(0), id = character(0), language = character(0), origin = character(0)))"
regmatches(string, gregexpr('(?<=")[^"]*(?=")', string, perl = TRUE))
# [[1]]
# [1] "cskarelli haunting photo ritsopi panayiota reacts fire reach home village gouves evia konstant"
尽管我会再次声明:这是在修复症状,而不是我认为的潜在问题,即您(或某人)以某种方式拥有一个合法的 Rlist
对象,该对象带有一些错误的代码,被转换为该对象的字符串表示形式,您现在正尝试从中保存数据。
从此字符串中提取的另一种方法(因为它是 R 表达式)是将其转换回 R 对象:
obj <- eval(parse(text=string))
obj$content
# [1] "cskarelli haunting photo ritsopi panayiota reacts fire reach home village gouves evia konstant"
str(obj)
# List of 2
# $ content: chr "cskarelli haunting photo ritsopi panayiota reacts fire reach home village gouves evia konstant"
# $ meta :List of 7
# ..$ author : chr(0)
# ..$ datetimestamp:List of 9
# .. ..$ sec : num 42.6
# .. ..$ min : num 39
# .. ..$ hour : num 11
# .. ..$ mday : num 15
# .. ..$ mon : num 7
# .. ..$ year : num 121
# .. ..$ wday : num 0
# .. ..$ yday : num 226
# .. ..$ isdst: num 0
# ..$ description : chr(0)
# ..$ heading : chr(0)
# ..$ id : chr(0)
# ..$ language : chr(0)
# ..$ origin : chr(0)
但是,eval(parse(..))
应谨慎使用 ,因为它可能导致与修复症状一样多的问题。
推荐阅读
- floating-point - Chebychev 点和浮点精度
- java - 爪哇 | 如何让其中一个线程休眠而其他线程仍在运行?
- c# - 为什么我在这里得到一个空引用异常?
- mysql - sql INSERT INTO 说列计数与第 1 行的值计数不匹配
- go - Golang 自定义类型 fmt 打印
- crm - 在 vtiger CRM 中创建联系人时出现错误消息
- android - 对于相机活动,onActivityResult() 中的结果代码为 -1。如何进行调试?
- javascript - 如何使用 JavaScript 更新内容而不显示它正在刷新“闪烁”?
- c# - 无法使用 Json.Net 将嵌套字典从 json 转换回 c#
- python - 为列表中的每个项目添加换行符,使用beautifulsoup找到项目