gpt4 book ai didi

r - 使用 data.table 在指定关键字之间提取字符串的第一个实例的最佳方法

转载 作者:行者123 更新时间:2023-12-04 10:43:51 24 4
gpt4 key购买 nike

我想使用 data.table 提取某些单词后面的字符串。

主题:
从到:
日期:
信息:

预期输入:
主题:欢迎\r\n发件人:(Jane Doe) JaneDoe@emaildomain.com\r\n收件人:
(Foo Bar) Foo.Bar@emaildomain.com\r\n日期:1/1/2019 7:01:32 AM\r\n\r\n 从我的 iPhone 发送\r\n\r\n开始转发消息:\r\n\r\n来自:X 先生

我尝试了一些函数,但无法让代码只提取字符串的第一个实例并忽略后续字符串。我也遇到了仅捕获我正在寻找的部分的问题。

library(data.table)

x<- as.data.table("Subject: Welcome \r\nFrom: (Jane Doe) JaneDoe@emaildomain.com\r\nTo:
(Foo Bar) Foo.Bar@emaildomain.com\r\nDate: 1/1/2019 7:01:32 AM\r\n\r\n Sent from my iPhone\r\n\r\nBegin forwarded message:\r\n\r\nFrom: Mr. X <xxx@gmail.com","x1")

x[, Subject := sub('^.*Subject:\\s*|\\s*From:.*$', '', V1) ][]
x[, From := sub('^.*From:\\s*|\\s*To:.*$', '', V1) ][]
x[, To := sub('^.*To:\\s*|\\s*Date:.*$', '', V1) ][]
x[, Message := sub('^.*PM|AM\\s*|\\s*.*$', '', V1) ][]

x

当前结果:
V1
主题:欢迎\r\n发件人:(Jane Doe)JaneDoe@emaildomain.com\r\n收件人:\n(Foo Bar)Foo.Bar@emaildomain.com\r\n日期:2019 年 1 月 1 日 7:01:32 AM\r\n\r\n 从我的 iPhone 发送\r\n\r\n开始转发消息:\r\n\r\n发件人:X 先生

来自:X先生

来自:X先生

消息:(空白)

最佳答案

您可以使用 Base R strcapture功能:

prot = data.frame(setNames(replicate(4,character()),
c("Subject","From","To","Date")),stringsAsFactors = F)

patt = "Subject:\\s*(.*?)\\s*From:\\s*(.*?)\\s*To:\\s*(.*?)\\s*Date:\\s*(.*(?:A|P)M)"

strcapture(patt,x$V1,prot)

Subject From To Date
1 Welcome (Jane Doe) JaneDoe@emaildomain.com (Foo Bar) Foo.Bar@emaildomain.com 1/1/2019 7:01:32 AM

关于r - 使用 data.table 在指定关键字之间提取字符串的第一个实例的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57516875/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com