当前位置: 首页 > news >正文

从pdf中提取文本 数据清洗

#https://cloud.tencent.com/developer/article/1475059
从pdf中提取文本 数据清洗

getwd()
path=“G:/papers/papers/SCRNASEQ AND SPATIAL/codes”
dir.create(path)
setwd(path)

library(pdftools)
file=“G:/papers/papers/SCRNASEQ AND SPATIAL/A spatially restricted fibrotic niche in pulmonary fibrosis is sustained by M-CSF M-CSFR signalling in monocyte-derived alveolar macrophages.pdf”

pdf_info(pdf = file)
#当使用pdf_text提取文档内容时,全部内容都被提取为一个字符串向量,
#每页的内容都被单独放置于一个字符串中。帮助文档的PDF格式一共包含5页,所以这里会得到一个长度为5的字符串向量。

#有两种方式可用于查看提取的文本:可以直接将结果显示在console中(通过执行print(text)或直接运行text),也可以通过“[ ]”来指定显示某一页的内容。
#空白的位置都会以空格的字符格式显示,“\r\n”代表换行符号。提取文档内容的代码如下:

text<- pdf_text(file)
length(text)

class(text)
text[1]

#该文档无附件,所以会显示一个空列表:
pdf_attachments(file)

#文档中一共包含了6种字体,pdf_fonts会给出字体的名称、类型、是否嵌入文档中这三类信息,具体如下:
pdf_fonts(pdf = file)

text[59]
text[347]

library(pdftools)
#BiocManager::install(“glue”)
library(tidyverse)

text[59]
text[347]

UC_text <- text[59:347] %>%
readr::read_lines() #按行读入,给每一行的两端加了一个引号
head(UC_text,90)
head(UC_text)

str_trim(" String\t") #String

UC_text %>% str_trim() %>% strsplit(split = " ") #String

head(UC_text %>% str_trim())

nchar(UC_text[1])
length(UC_text[1])
paste(UC_text[1], sep = "*? * ", collapse = “_”)

str_split(UC_text[2],pattern =" " ) %>% grep(pattern = ‘’,value = TRUE)

UC_text[2]
b=as.vector(str_split(UC_text[2],pattern =" " ))
str(as.vector(str_split(UC_text[2],pattern =" " )))
str(b)
str_subset(str_split(UC_text[2],pattern =" " ),“1”)
word(UC_text[2])
word(UC_text[2],sep = fixed(" "))
word(UC_text[2],1:100,sep = fixed(’ '))

UC_text <- text[59:347] %>%
readr::read_lines() #按行读入,给每一行的两端加了一个引号
head(UC_text,90)
head(UC_text)

word(UC_text[1],1:100) %>% grep(pattern = ‘.’,value = TRUE)
word(UC_text[2],1:100) %>% grep(pattern = ‘.’,value = TRUE)

length(UC_text)
pure_uctext=UC_text[2:length(UC_text)]
head(pure_uctext)
word(pure_uctext[1],1:100) %>% grep(pattern = ‘.’,value = TRUE) #点代表任意字符

mydata=data.frame()
dim(mydata)=c(17397,8)

myvector=vector()
mylist=list()
for (linenum in 1:length(pure_uctext)) {
#linenum=1
#myvector=union(myvector,word(pure_uctext[linenum],1:100) %>% grep(pattern = ‘.’,value = TRUE))
mylist[[linenum]]=word(pure_uctext[linenum],1:100) %>% grep(pattern = ‘.’,value = TRUE)
}

mylist[[17397]]
length(mylist)
mylist

mydata
class(mydata)
str(mydata)

table = data.frame(
姓名 = c(“张三”, “李四”,“王五”),
工号 = c(“001”,“002”,“003”),
月薪 = c(1000, 2000,3000)
)
getwd()
save(UC_text,file = “uctext.rds”)


  1. * ↩︎

相关文章:

  • 5.3 Python 比较运算符
  • seurat的 addmodule循环画图 等同于基因的叠加图 识别细胞类型 空转与单细胞得到的marker基因联合
  • 5.4 Python 逻辑运算符
  • 矽肺的 柱状图 比例图 bar图
  • 6.1 Python 单分支结构 if语句
  • 把subset_data的子集重新放到总群allmerge中找marker基因 findallmarkers
  • 6.2 python 多分支结构if...elif...else 语句
  • 6.3 Python if语句 条件判断嵌套
  • 细胞打分 addmodule addmodule对所有细胞进行循环评分
  • 6.4 序列及range函数
  • 5_addmodule空转spatial空转打分模块inflammatory炎症评分空转炎症评分 addmodule seurat
  • 6.5 python while 循环
  • 6.6 Python for 循环
  • 批量读取文件夹下所有excel文件里的内容,放入列表 把所有不管行列名如何excel合并成一个大的excel 批量读取excel,批量合并excel
  • 6.7 continue 和 break 语句
  • 【comparator, comparable】小总结
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • extjs4学习之配置
  • Invalidate和postInvalidate的区别
  • javascript面向对象之创建对象
  • JavaScript中的对象个人分享
  • Vue 动态创建 component
  • 从零搭建Koa2 Server
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 基于游标的分页接口实现
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 世界上最简单的无等待算法(getAndIncrement)
  • 双管齐下,VMware的容器新战略
  • 温故知新之javascript面向对象
  • 学习HTTP相关知识笔记
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • # 数论-逆元
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (06)金属布线——为半导体注入生命的连接
  • (2)Java 简介
  • (4.10~4.16)
  • (C++)八皇后问题
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (剑指Offer)面试题34:丑数
  • (一)Dubbo快速入门、介绍、使用
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (一)UDP基本编程步骤
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .Net Core 中间件验签
  • .net Stream篇(六)
  • .net 提取注释生成API文档 帮助文档
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则