是否有R函数提取字符中的数字?
我有一个像是否有R函数提取字符中的数字?,r,dplyr,R,Dplyr,我有一个像d d <- c("您尾号1234卡11月11日00:03转入人民币1,500.00元,余额人民币1,501.12元", "您尾号3256卡11月11日00:03转出人民币678.12元,余额人民币1,501.12元", "您尾号7894卡11月11日00:03取现0.85元,余额人民币1,501.12元", "您尾号3285卡11月11日00:03支付3.85元,余额
d
d <- c("您尾号1234卡11月11日00:03转入人民币1,500.00元,余额人民币1,501.12元",
"您尾号3256卡11月11日00:03转出人民币678.12元,余额人民币1,501.12元",
"您尾号7894卡11月11日00:03取现0.85元,余额人民币1,501.12元",
"您尾号3285卡11月11日00:03支付3.85元,余额人民币1,501.12元")
d您可以从stringr
使用stru extract
功能
正向前瞻(?=)
查找元代码>符号
负回溯(?!以下是rebus、readr和stringr/stringi包的两个选项:
library(rebus)
library(readr)
library(stringr)
library(stringi)
pattern <- optional(one_or_more(DGT) %R% ",") %R% optional(one_or_more(DGT) %R% ",") %R% one_or_more(DGT) %R% DOT %R% one_or_more(DGT)
d <- c("您尾号1234卡11月11日00:03转入人民币1,500.00元,余额人民币1,501.12元", "您尾号3256卡11月11日00:03转出人民币678.12元,余额人民币1,501.12元", "您尾号7894卡11月11日00:03取现0.85元,余额人民币1,501.12元", "您尾号3285卡11月11日00:03支付3.85元,余额人民币1,501.12元")
readr::parse_number(stringr::str_extract(d, pattern))
[1] 1500.00 678.12 0.85 3.85
readr::parse_number(unique(unlist(stringi::stri_extract_all_regex(d,pattern))))
[1] 1500.00 1501.12 678.12 0.85 3.85
库(rebus)
图书馆(readr)
图书馆(stringr)
图书馆(stringi)
模式这是一个基本的R解决方案:
txt我添加了210万,再次假设小数是目标
d <- c("您尾号1234卡11月11日00:03转入人民币2,100,500.00元,余额人民币1,501.12元",
"您尾号3256卡11月11日00:03转出人民币678.12元,余额人民币1,501.12元",
"您尾号7894卡11月11日00:03取现0.85元,余额人民币1,501.12元",
"您尾号3285卡11月11日00:03支付3.85元,余额人民币1,501.12元")
str_extract_all(d,"(\\d+,?)*\\.\\d+")
d有一个python库可以解决这个问题
吉恩普
安装
榨取钱财
您将得到以下结果:
['1,500.00元', '1,501.12元']
['678.12元', '1,501.12元']
['0.85元', '1,501.12元']
['3.85元', '1,501.12元']
请在这个github项目中加星号。我想提取“1500.00”您的答案只提取“500.00”每个字符串中的第二个数值如何,例如第一个字符串中的1501.12
?您不想提取吗?是的,我也想提取它们
\d{1,3} a leading 1 to 3 digits
(?:,\\d{3})* followed by zero or more thousands separator 3 digit groups
\\.\\d{2} followed by a decimal component with 2 digits of precision
d <- c("您尾号1234卡11月11日00:03转入人民币2,100,500.00元,余额人民币1,501.12元",
"您尾号3256卡11月11日00:03转出人民币678.12元,余额人民币1,501.12元",
"您尾号7894卡11月11日00:03取现0.85元,余额人民币1,501.12元",
"您尾号3285卡11月11日00:03支付3.85元,余额人民币1,501.12元")
str_extract_all(d,"(\\d+,?)*\\.\\d+")
$ git clone https://github.com/dongrixinyu/JioNLP
$ cd ./JioNLP
$ pip install .
import jionlp as jio
text = ["您尾号1234卡11月11日00:03转入人民币1,500.00元,余额人民币1,501.12元",
"您尾号3256卡11月11日00:03转出人民币678.12元,余额人民币1,501.12元",
"您尾号7894卡11月11日00:03取现0.85元,余额人民币1,501.12元",
"您尾号3285卡11月11日00:03支付3.85元,余额人民币1,501.12元"]
for i in text:
res = jio.extract_money(i)
print(res)
['1,500.00元', '1,501.12元']
['678.12元', '1,501.12元']
['0.85元', '1,501.12元']
['3.85元', '1,501.12元']