我有一个扫描的文档,在OCR之后,我有多个问题,结果显示为错误的格式。
x <- c("9 243,51 233 286,08 18 386.21")
或x <- c("9.243,51 233 286,08 18 386.21")
期望结果是:"9.244,51" "233.286,08" "18.386,21"
Todos:十进制数字应以逗号分隔(并非总是如此)。数字中的空格应该用点代替(但要小心,因为空格也可以分隔数字)。
我很乐意得到任何帮助!
您可以使用gsub
和strsplit
,假设原始.
从未在OCR中,并且所有数字都有一个可识别的数字,
或.
。
. <- gsub("\.", ",", x)
. <- gsub("(,\d+) +", "\1:", .)
. <- gsub(" +", ".", .)
strsplit(., ":")[[1]]
#[1] "9.243,51" "233.286,08" "18.386,21"
或者假设逗号后面有两位数字:
. <- gsub("[.,](\d{2}\b)", ",\1", x)
. <- gsub("(,\d{2}) +", "\1:", .)
. <- gsub(" +", ".", .)
strsplit(., ":")[[1]]
#[1] "9.243,51" "233.286,08" "18.386,21"
或:
. <- trimws(strsplit(x, "(?<=[.,](\d{2}\b))", perl=TRUE)[[1]])
. <- gsub("\.(?=\d{2}$)", ",", ., perl=TRUE)
gsub("(?<=\d) +(?=\d{3})", ".", ., perl=TRUE)
#[1] "9.243,51" "233.286,08" "18.386,21"