【发布时间】:2020-08-19 12:51:58
【问题描述】:
我有一个包含 19 世纪国会演讲稿的 txt 文件。这是广泛的格式:
Mr. JOHNSON. Researching congress is neat!
Mr. JACKSON. For sure. Sometimes I think
that I would do it for a living.
Mr. SMITH, of Virginia. But then I realize
it's actually pretty hard!
我想建立一个数据框来分隔每个说话者所说的块。类似的东西:
SPEAKER STATEMENT
Mr. JOHNSON Researching ...
Mr. Jackson For sure. ...
Mr. Smith, of Virginia But then...
我想出了一个正则表达式,可以识别 Mr. [something] 或 Mr. [something, of some place] 的每个实例(这些演讲来自不幸的是他们都是 Mr.)。是这样的:
pattern <- regex("((Mr\\.\\s[A-Z][A-Za-z1-9]+)(\\,\\sof\\s[A-Za-z1-9]+\\.|\\.)|(The\\sCHAIRMAN))", dotall = TRUE)
str_extract_all(data, pattern)
这会返回
[1] Mr. JOHNSON.
[2] Mr. JACKSON.
[3] Mr. SMITH, of Virginia.
我现在的问题是:如何提取每个提取的名称之间的文本?我尝试了以下方法,但没有成功:
library(qdapRegex)
ex_between(data, pattern, pattern)[[1]]
有什么想法吗?非常感谢!
【问题讨论】:
-
我知道python中的正则表达式。是否可以使用正则表达式来替换扬声器。所以你会用一个空字符串替换说话者的名字,然后剩下的文本就剩下了吗?
-
您能否说明您是如何创建变量
data的?如何将文本读入 R 对于帮助回答这个问题很重要。