如何导入包含在Python中创建的列表的R变量?

时间:2016-11-01 15:57:49

标签: r regex dplyr

我有一个csv,其中包含一个如下所示的变量(在我使用fread后跟as_tibble在R中读取它之后):

 myvar
 <chr>
 []
 [u'welcome']
 [u'the oil price']

该变量已在Python中创建,我必须处理此pythonesque列表。

有没有办法使用tidyversedplyr和其他人)直接将此变量作为正确的字符串(而不是列表)直接读入,而不会过滤掉所有{{1} },[]和]

u'

谢谢!

1 个答案:

答案 0 :(得分:1)

如果您的字符串不会包含任何单引号,则可以使用'\\[u\'(.*)\'\\]'匹配括号后跟&#34; u&#34;并且用单引号括起来的文本以另一个括号结束。然后,您可以通过捕获它来提取单引号之间的内容(下面是myvar3

更容易(对我而言)是准确捕获您想要的内容并忽略其余部分,因此\'(.*)\'|.将匹配单个引号,捕获任意次数的任何字符以将\1分组到另一个引用。 |.允许我们不像myvar3中那样写出确切的模式。

data <- data.frame(myvar = c("[]", "[u'welcome']", "[u'the oil price']"))

within(data, {
  myvar2 <- gsub('\'(.*)\'|.', '\\1', myvar)
  myvar3 <- gsub('\\[(?:u\'(.*)\')?\\]', '\\1', myvar)
})


#                myvar        myvar3        myvar2
# 1                 []                           
# 2       [u'welcome']       welcome       welcome
# 3 [u'the oil price'] the oil price the oil price