如何识别R中字符串中混合的数字?



我有一个扫描的文档,在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:十进制数字应以逗号分隔(并非总是如此)。数字中的空格应该用点代替(但要小心,因为空格也可以分隔数字)。

我很乐意得到任何帮助!

您可以使用gsubstrsplit,假设原始.从未在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" 

相关内容

最新更新