首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >R使用正则表达式替换字符串中空格的第n次出现。

R使用正则表达式替换字符串中空格的第n次出现。
EN

Stack Overflow用户
提问于 2022-10-20 12:07:45
回答 1查看 42关注 0票数 1

我是一个正则表达式的初学者,并且正在处理来自pdf和R的数据。不幸的是,R没有捕获数据中的小数点,所以我需要用句点替换特定的空格。我确实找到了一个解决这个问题的方法,但是我怀疑有一种更有效的方法可以用正则表达式来完成这个任务。下面是一些示例数据,我正在使用的解决方案,以及我想要得到的结果数据集。

代码语言:javascript
运行
AI代码解释
复制
ex<-c("16 7978 38 78 651 42 651 42","25 1967 8 94 225 26 225 26",
      "16 5000 8 00 132 00 132 00", "16 6125 2 00 33 23 33 23")

df<-data.frame(row=1:4,string=ex)
df

row                   string
 1  16 7978 38 78 651 42 651 42
 2  25 1967 8 94 225 26 225 26
 3  16 5000 8 00 132 00 132 00
 4  16 6125 2 00 33 23 33 23

df$tst<-stri_replace_first_fixed(df$string," ",".")
df$rate<-sapply(strsplit(df$tst," ",fixed=T),"[",1)
df$string2<-stri_replace_first_fixed(df$tst,df$rate,"")%>% trimws()
df$tst<-stri_replace_first_fixed(df$string2," ",".")
df$hours<-sapply(strsplit(df$tst," ",fixed=T),"[",1)
df$string3<-stri_replace_first_fixed(df$tst,df$hours,"")%>% trimws()
df$tst<-stri_replace_first_fixed(df$string3," ",".")
df$period_amt<-sapply(strsplit(df$tst," ",fixed=T),"[",1)
df$string4<-stri_replace_first_fixed(df$tst,df$period_amt,"")%>% trimws()
df$tst<-stri_replace_first_fixed(df$string3," ",".")
df$ytd_amt<-sapply(strsplit(df$tst," ",fixed=T),"[",1)


df<-df %>% dplyr::select(-string2,-string3,-tst,-string4)
df
 
  row                     string   rate  hours  period_amt ytd_amt
   1 16 7978 38 78 651 42 651 42 16.7978 38.78     651.42  651.42
   2  25 1967 8 94 225 26 225 26 25.1967  8.94     225.26  225.26
   3  16 5000 8 00 132 00 132 00 16.5000  8.00     132.00  132.00
   4    16 6125 2 00 33 23 33 23 16.6125  2.00      33.23   33.23

在上面的解决方案中,我将第一次出现的空格替换为句点,提取校正的数字,然后从字符串中删除更正的数字。然后迭代地重复这个处理,直到提取出所有的值。正如我所说的,这个解决方案很有效,但在我看来,它看起来相当草率,如果我需要从文本中纠正和提取大量的值,就会很乏味。任何关于在R中实现这一目标的更好方法的建议都将不胜感激。

提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-20 12:27:01

这里有个办法。正如@Peter所言,这可能更好地解决小数点缺失的原因,也许这与pdf源有关。

此外,它将取决于源数字格式,例如,如果它有前导零,负号等。

代码语言:javascript
运行
AI代码解释
复制
ex<-c("16 7978 38 78 651 42 651 42","25 1967 8 94 225 26 225 26",
      "16 5000 8 00 132 00 132 00", "16 6125 2 00 33 23 33 23")

df<-data.frame(row=1:4,string=ex)

n <- do.call(rbind, strsplit(gsub("(\\d+) (\\d+)","\\1.\\2",df$string ), " " ))
n <- apply(n, 2, as.numeric)
colnames(n) <- c("rate",  "hours",  "period_amt", "ytd_amt")
df<-cbind(df, n)
df
#>   row                      string    rate hours period_amt ytd_amt
#> 1   1 16 7978 38 78 651 42 651 42 16.7978 38.78     651.42  651.42
#> 2   2  25 1967 8 94 225 26 225 26 25.1967  8.94     225.26  225.26
#> 3   3  16 5000 8 00 132 00 132 00 16.5000  8.00     132.00  132.00
#> 4   4    16 6125 2 00 33 23 33 23 16.6125  2.00      33.23   33.23
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74145763

复制
相关文章
python替换第n个字符串_替换字符串中第n个出现的子字符串
我已经想出了下面的方法,它还考虑了替换所有出现在左边或右边的“旧”字符串的选项。当然,由于标准str.replace工作得很好,因此没有替换所有引用的选项。def nth_replace(string, old, new, n=1, option='only nth'):
用户7886150
2021/01/11
4.9K0
字符串:替换空格
示例 1: 输入:s = "We are happy." 输出:"We%20are%20happy."
代码随想录
2020/09/10
4.6K0
字符串:替换空格
算法-字符串替换空格
chaibubble
2018/01/02
2.5K0
算法-字符串替换空格
sqlserver 查找某个字符在字符串中第N次出现的位置
例如: 查找'A,' 在'A,B,C,D,A,B,C,D,C,D,B,A,C,E,'中第二次出现的位置 怎么实现,SQL 中有这样的函数吗?
跟着阿笨一起玩NET
2018/09/18
6.8K0
js正则表达式替换空格
例如,比如说要将1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed这种格式的uuid字符串中的-字符使用空格替换,可以使用下面的代码:
ccf19881030
2020/11/10
14.9K0
Python中字符串String去除出换行符(\n,\r)和空格的问题
在Python的编写过程中,获取到的字符串进场存在不明原因的换行和空格,如何整合成一个单句,成为问题。
全栈程序员站长
2022/08/14
4K0
Python中字符串String去除出换行符(\n,\r)和空格的问题
替换空格
https://leetcode-cn.com/problems/ti-huan-kong-ge-lcof/
代码随想录
2021/07/16
4.7K0
替换空格
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
用户3003813
2018/09/06
3.1K0
[剑指offer] 替换空格
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
尾尾部落
2018/09/04
2K0
空格替换
设计一种方法,将一个字符串中的所有空格替换成 %20 。你可以假设该字符串有足够的空间来加入新的字符,且你得到的是“真实的”字符长度。
呼延十
2019/07/01
2.3K0
[剑指offer][Java]替换空格
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
蛮三刀酱
2019/03/26
2.1K0
替换空格
题目:请实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“We are happy.”,则输出“We%20are%20happy.”。       看到这个题目,我们首先应该想到的是原来一个空格字符,替换之后变成'%'、'2'和'0'这3个字符,因此字符串会变长。如果是在原来的字符串上做替换,那么就有可能覆盖修改在该字符串后面的内存。如果是创建新的字符串并在新的字符串上做替换,那么我们可以自己分配足够多的内存。       在这里介绍一种时间复杂度为O(n)的解法。        我们可以先遍历
猿人谷
2018/01/17
2.8K0
替换空格
替换空格
题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 public class Solution { public String replaceSpace(StringBuffer str) { if(str==null){ return null; } StringBuilder newStr = new St
desperate633
2018/08/27
2.4K0
空格替换
描述 设计一种方法,将一个字符串中的所有空格替换成 %20 。你可以假设该字符串有足够的空间来加入新的字符,且你得到的是“真实的”字符长度。 你的程序还需要返回被替换后的字符串的长度。 注意事项:如果使用 Java 或 Python, 程序中请用字符数组表示字符串。 样例 对于字符串 "Hello World" , 长度为 11 替换空格之后,参数中的字符串需要变为 "Hello%20World",并且把新长度 17 作为结果返回。 思路 循环遍历字符数组 碰到空字符则将空字符后所有的字符向后移动两位
一份执着✘
2018/06/04
2.7K0
剑指offer第3题:替换空格
直接遍历整个字符串,对于空格的地方,使用%20进行替换,对于其他部分我们依旧直接append就好。
鹏-程-万-里
2020/07/15
3920
剑指offer第3题:替换空格
Python中字符串String去除出换行符(\n,\r)和空格的问题「建议收藏」
在Python的编写过程中,获取到的字符串进场存在不明原因的换行和空格,如何整合成一个单句,成为问题。
全栈程序员站长
2022/06/28
3.4K0
Python中字符串String去除出换行符(\n,\r)和空格的问题「建议收藏」
替换空格_02
咱也不知道这题是不是有啥奇怪的思路要做?直接就下面这行代码结束了。 public String replaceSpace (String s) { if (s==null||s.length()==0){ return ""; }else { return s.replaceAll(" ","%20"); } }
名字是乱打的
2021/12/23
1.7K0
替换空格_02
字符串处理算法题 -> 替换空格
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
小锋学长生活大爆炸
2020/08/13
4020
字符串处理算法题 -> 替换空格
[剑指]2空格替换
1,题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20 Happy。 2,解题思路 这里我们直接用字符串遍历的方法,将每一个字符遍历出来进行判断; 若等于空格,则替换成%20,不等于空格,则加上其本身即可; 最后再转换成字符串对象; 3,程序代码 public static String replaceSpace(StringBuffer str) { StringBuffer sb=n
程序员的时光001
2020/07/22
8990
LintCode 空格替换
设计一种方法,将一个字符串中的所有空格替换成 %20。你可以假设该字符串有足够的空间来加入新的字符,且你得到的是“真实的”字符长度。 你的程序还需要返回被替换后的字符串的长度。
desperate633
2018/08/22
7740

相似问题

替换字符串的第n次出现。

60

替换第n次出现的字符串

21

正则表达式:替换第n次出现

30

替换第n次出现的javascript

03

替换单词的第n次出现

27
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档