首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分析面试文本

分析面试文本
EN

Stack Overflow用户
提问于 2020-03-21 00:49:38
回答 2查看 73关注 0票数 0

我有一份总统辩论的文本文件。最后,我希望将文本解析成一个数据帧,其中每一行都是一条语句,其中一列包含发言者的姓名,另一列包含该语句。例如:

代码语言:javascript
复制
"Bob Smith: Hi Steve. How are you doing? Steve Brown: Hi Bob. I'm doing well!"

会变成:

代码语言:javascript
复制
   name          text
1   Bob Smith    Hi Steve. How are you doing?
2 Steve Brown    Hi Bob. I'm doing well!

问:如何将语句从名称中分离出来?我尝试在冒号上拆分:

代码语言:javascript
复制
data <- strsplit(data, split=":")

但是我得到了这个:

代码语言:javascript
复制
"Bob Smith" "Hi Steve. How are you doing? Steve Brown" "Hi Bob. I'm doing well!"

当我想要的是:

代码语言:javascript
复制
"Bob Smith" "Hi Steve. How are you doing?" "Steve Brown" "Hi Bob. I'm doing well!"
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-21 01:06:56

我怀疑这是否能解决您的所有解析需求,但是使用strsplit来解决您最直接的问题的一种方法是使用lookaround。不过,您需要使用perl regex。

在这里,您指示strsplit在:或之前有标点符号且空格和:之间只有字母数字字符或空格的空格上拆分。\\pP匹配标点符号,\\w匹配单词字符。

代码语言:javascript
复制
data <- "Bob Smith: Hi Steve. How are you doing? Steve Brown: Hi Bob. I'm doing well!"
strsplit(data,split="(: |(?<=\\pP) (?=[\\w ]+:))",perl=TRUE)
[[1]]
[1] "Bob Smith"                    "Hi Steve. How are you doing?" "Steve Brown"                 
[4] "Hi Bob. I'm doing well!"  
票数 2
EN

Stack Overflow用户

发布于 2020-03-21 00:57:44

我们可以使用stringr包通过正则表达式来提取它们。然后,您将直接拥有您要查找的speaker和quote列。

代码语言:javascript
复制
a <- "Bob: Hi Steve. Steve: Hi Bob."

library(stringr)

str_match_all(a, "([A-Za-z]*?): (.*?\\.)")
#> [[1]]
#>      [,1]             [,2]    [,3]       
#> [1,] "Bob: Hi Steve." "Bob"   "Hi Steve."
#> [2,] "Steve: Hi Bob." "Steve" "Hi Bob."
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60778339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档