从 R 中的字符串中删除选定的空格
Remove selected whitespaces from string in R
我真的被困在某个时刻,试图摆脱我从 PDF 获得的字符串中的一些空格。
字符串如下所示:
[1] " ZUSAMMEN 8 756 3 193 1 456 531 506 1 931 1 780 225 2 059"
如您所见,我遇到的问题是所有 "thousands" 都用空格分隔,不是 8756,而是 8 756。
我的问题是我只想自动删除千位之间的空格。
我知道如何手动管理它,但我需要一种自动化的方式,因为我有几千个观察结果需要调整。
我试过的是:
c <- gsub("\s", "", t)
揭示
[1] "ZUSAMMEN875631931456531506193117802252059"
但是,我不知道如何只去掉千位数字之间的那些空格。
我希望一切都清楚!
提前致谢,
尼克拉斯
您可以使用
x <- " ZUSAMMEN 8 756 3 193 1 456 531 506 1 931 1 780 225 2 059"
gsub("(\d) (\d)", "\1\2", x)
要去除任何白色space,请使用以下两种方法之一:
gsub("(\d)[[:space:]](\d)", "\1\2", x)
gsub("(\d)\s(\d)", "\1\2", x)
gsub("(*UCP)(\d)\s(\d)", "\1\2", x, perl=TRUE)
gsub("(*UCP)(?<=\d)\s(?=\d)", "", x, perl=TRUE)
备注
(\d) (\d)
匹配并捕获一个数字到捕获组 1(第一个 (\d)
),然后匹配单个 space,然后捕获另一个数字到组 2。如果替换模式中未使用相应的反向引用,则捕获和使用的数字将被删除,因此 "\1\2"
替换字符串包含它们
[[:space:]]
是一个POSIX字符class匹配任何白色space,类似于\s
- 如果您使用 Unicode 文本,PCRE 正则表达式(通过
perl=TRUE
启用)可以与 \s
和 (*UCP)
动词一起使用(它将匹配 soft/hard spaces等)
- 如果您使用
(?<=\d)
后向和 (?=\d)
前向而不是捕获组,则文本不会被消耗(不会添加到匹配值)并且不会因此被删除,因此不需要反向引用在替换模式中。
我真的被困在某个时刻,试图摆脱我从 PDF 获得的字符串中的一些空格。
字符串如下所示:
[1] " ZUSAMMEN 8 756 3 193 1 456 531 506 1 931 1 780 225 2 059"
如您所见,我遇到的问题是所有 "thousands" 都用空格分隔,不是 8756,而是 8 756。
我的问题是我只想自动删除千位之间的空格。
我知道如何手动管理它,但我需要一种自动化的方式,因为我有几千个观察结果需要调整。
我试过的是:
c <- gsub("\s", "", t)
揭示
[1] "ZUSAMMEN875631931456531506193117802252059"
但是,我不知道如何只去掉千位数字之间的那些空格。
我希望一切都清楚! 提前致谢, 尼克拉斯
您可以使用
x <- " ZUSAMMEN 8 756 3 193 1 456 531 506 1 931 1 780 225 2 059"
gsub("(\d) (\d)", "\1\2", x)
要去除任何白色space,请使用以下两种方法之一:
gsub("(\d)[[:space:]](\d)", "\1\2", x)
gsub("(\d)\s(\d)", "\1\2", x)
gsub("(*UCP)(\d)\s(\d)", "\1\2", x, perl=TRUE)
gsub("(*UCP)(?<=\d)\s(?=\d)", "", x, perl=TRUE)
备注
(\d) (\d)
匹配并捕获一个数字到捕获组 1(第一个(\d)
),然后匹配单个 space,然后捕获另一个数字到组 2。如果替换模式中未使用相应的反向引用,则捕获和使用的数字将被删除,因此"\1\2"
替换字符串包含它们[[:space:]]
是一个POSIX字符class匹配任何白色space,类似于\s
- 如果您使用 Unicode 文本,PCRE 正则表达式(通过
perl=TRUE
启用)可以与\s
和(*UCP)
动词一起使用(它将匹配 soft/hard spaces等) - 如果您使用
(?<=\d)
后向和(?=\d)
前向而不是捕获组,则文本不会被消耗(不会添加到匹配值)并且不会因此被删除,因此不需要反向引用在替换模式中。