通过尝试摆脱我从PDF中获得的字符串中的一些空格,我真的陷入了困境。
该字符串如下所示:
[1] " ZUSAMMEN 8 756 3 193 1 456 531 506 1 931 1 780 225 2 059"
正如你所看到的,我遇到的问题是所有“千”都用空格分隔,而不是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)
要删除任何空格,请使用以下两种方法之一:
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)
lookbehind和(?=\\d)
lookahead而不是捕获组,则不会消耗文本(不添加到匹配值)并且因此不会被删除,因此,不需要替换模式中的反向引用。