【问题标题】:Extract particular text data from string从字符串中提取特定的文本数据
【发布时间】:2019-09-13 08:13:52
【问题描述】:

我有一个示例文本,例如“0 zacapa ambar 40% 1l”。我需要帮助来提取此文本的 2 个不同部分。 输出:
1) 萨卡帕安巴尔
2) 40% 1升

例子:

1 smirnoff espresso twist 10l
1 captain morgan black spiced 10l
1 bulleit 95 rye 10l

所以我想只为字符串做一些模糊匹配,并期待在 2 部分中提取细节。

【问题讨论】:

  • 提取的逻辑是什么?请在您的问题中添加其他示例(不在 cmets 中),即编辑您的问题:stackoverflow.com/posts/57919736/edit
  • Ex:0942 baileys vanilla cinnamon 100cl 17% 输出:baileys vanilla cinnamon and 100cl 17%
  • 将 (1 smirnoff espresso twist 10) 视为一次观察输出:smirnoff espresso twist 和 10 作为单独的输出。因此需要两个不同的输出来存储值请暂时将其模糊匹配

标签: r regex nlp


【解决方案1】:

假设您的输入是

x <- c("1 smirnoff espresso twist 10l", "1 captain morgan black spiced 10l", 
        "1 bulleit 95 rye 10l", "baileys irish cr 17% 100cl")

你可以通过使用得到两个部分

part1 <- sub("\\d?\\s(.*?)\\s\\d+.*", "\\1", x)
part2 <- sub("\\d?.*\\s.*(\\d+.*?)", "\\1", x)

part1
#[1] "smirnoff espresso twist"     "captain morgan black spiced" "bulleit"        
#[4] "baileysirish cr"  

part2
#[1] "10l"        "10l"        "95 rye 10l" "17% 100cl" 

part1 忽略第一个数字并提取所有字符,直到下一个数字出现在 x 中,part2 提取之后的所有内容。

【讨论】:

  • 需要帮助以获取第 1 部分的模式 --- 从字符开始并获取所有字符,直到第一个数字出现(不包括第一个数值)第 2 部分 - 第 1 部分停止读取(包括数字开头值和字符串的其余部分)例如 1 smirnoff espresso twist 10l part 1 - smirnoff espresso twist part 2 - 10l(l 是必需的,它显示了计量单位) 示例 2:1 Captain morgan black spiced 10l part 1 - Captain morgan black spiced part 2 - 10l 感谢 Ronak 的努力
  • @Nitish 好的..我已经更新了答案。你现在可以检查吗?
  • ...非常感谢您帮助我。它解决了这个问题,但这里仍然存在一个问题。如果在字符串的开头,没有数字,那么这将不起作用。例如:baileys 爱尔兰 cr 17% 100cl。它返回所有内容
  • 所以如果你能帮我建立一个逻辑匹配应该从字符串中的字母值开始。
  • @Nitish OK..将该示例包含在数据中并更新了答案。
猜你喜欢
  • 2012-03-30
  • 2020-07-24
  • 1970-01-01
  • 2022-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多