在某些时候,我确实想摆脱在PDF中获取的字符串中的空白,从而陷入了困境。
字符串如下:
[1] " ZUSAMMEN 8 756 3 193 1 456 531 506 1 931 1 780 225 2 059"
正如您所看到的,我的问题是所有的“千位”都用空格分隔,而不是8756,而是8756。
我的问题是我只想自动删除数千个之间的空格。
我知道如何手动管理,但是我需要一种自动化的方法,因为我需要调整数千个观测值。
我尝试过的是:
c <- gsub("\\s", "", t)
显示
[1] "ZUSAMMEN875631931456531506193117802252059"
但是,我不知道如何仅去除成千上万个数字之间的空格。
我希望一切都清楚了! 提前致谢, 尼克拉斯
答案 0 :(得分:0)
您可以使用
x <- " ZUSAMMEN 8 756 3 193 1 456 531 506 1 931 1 780 225 2 059"
gsub("(\\d) (\\d)", "\\1\\2", x)
请参见R demo online。
要删除任何空格,请使用以下两个选项之一:
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)
),然后匹配一个空格,然后将另一个数字捕获到组2中。如果替换模式中未使用相应的后向引用,则捕获并消耗的数字将被删除,因此"\\1\\2"
替换字符串包含这些数字[[:space:]]
是与任何空白匹配的POSIX字符类,类似于\s
perl=TRUE
)与\s
和(*UCP)
动词一起使用(它将匹配软/硬空格等)。 (?<=\\d)
后向和(?=\\d)
前瞻而不是捕获组,则不会消耗文本(不会将文本添加到匹配值),因此不会删除文本,因此,不需要替换模式。