r - ocr : 解开在行尾剪切的单词并保留段落
问题描述
我有一个字符串向量。向量的每个元素都对应于一行 ocerized 文本。每行的最后一个单词可以被破折号(或不被)剪切并继续下一行,即向量的下一个元素。
text <- c("Lorem ipsum dolor sit am-",
"et consectetur adipis-",
"cing Quisque euismod, ex vel -aliquam- vestibulum",
"Nulla lacinia volutpat ipsum sed condimentum")
我想要的是:在保持段落中文本布局的同时重构被删减的单词。
Lorem ipsum dolor sit amet
consectetur adipiscing
Quisque euismod, ex vel -aliquam- vestibulum
Nulla lacinia volutpat ipsum sed condimentum
我不想要什么:
Lorem ipsum dolor sit amet consectetur adipiscing Quisque euismod, ex vel -aliquam- vestibulum Nulla lacinia volutpat ipsum sed condimentum
我做了什么:我将向量的行转换为数据数组,因为我认为 dplyr 包中的函数(领先和滞后)可能对我有用。
textdf <- as.data.frame((text))
library(dplyr)
textdf <- textdf %>%
rename( text = '(text)')
我认为应该做什么:如果字符串以破折号结尾,则选择下一行的第一个单词,删除破折号并剪切并粘贴该行末尾的单词。
library(stringr)
textdf <- textdf %>%
mutate(text = str_replace(text, "-$", lag("^.+\\s")))
解决方案
这是一种方法 -
library(dplyr)
data.frame(text) %>%
#The word end with "-"
mutate(cut_word = grepl('-$', text),
#Remove the last "-"
text = sub('-$', '', text),
#If cut_word get 1st word from next value and paste it in current value.
text = ifelse(cut_word, paste0(text, stringr::word(lead(text), 1)), text),
#Remove the first word if previous value has cut_word.
text = ifelse(lag(cut_word, default = FALSE), sub('.*?\\s', '', text), text)) %>%
select(-cut_word)
# text
#1 Lorem ipsum dolor sit amet
#2 consectetur adipiscing
#3 Quisque euismod, ex vel -aliquam- vestibulum
#4 Nulla lacinia volutpat ipsum sed condimentum
推荐阅读
- xcode - Xcode 12.1 版错误的画布编辑器
- javascript - Node.js How to retrieve data from http.get response
- python - 过滤 Pandas 中字母、数字或连字符的一列的行
- c - 将字符串中的单词替换为星号
- r - 检查列表中的对象是否存在,如果在 R 中不存在则将其删除
- node.js - 获取 TypeError:使用 Node.js 强大时无法读取未定义的属性“内容长度”
- neural-network - 使用 sigmoid 函数的导数计算偏差增量始终为 0
- google-sheets - 在字符串中使用动态单元格引用(在双引号“”内)?
- c# - Xamarin Forms - 绝对布局中按钮元素onclick下的图像元素消失
- python - Boto3 + DynamoDB:查询所有有限制和排序的数据