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

用R提取PDF文本并创建整洁的数据

#https://cloud.tencent.com/developer/article/1475059

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)
)

用R提取PDF文本并创建整洁的数据


  1. * ↩︎

相关文章:

  • 4.9 Python 列表
  • 4.10 Python 元组
  • clustree确定多少个cluster
  • 4.11 python 字典
  • 4.12 input( ) 输入函数 及注释
  • 4.13 Python 索引与切片
  • 4.14 python 字符串的拼接及格式化(.format)
  • ggplot画 ump 和tsne 从seurat中使用addmodule得到的umap 使用ggplot画图
  • 5.1 Python 算术运算符
  • ggplot画梯度颜色图 不同颜色 对seurat的细胞类型进行inflammatory 炎症打分 addmodule
  • cell annotation细胞注释 给已经做成seurat对象的细胞统一改换名字 换标签 加标签
  • 5.2 Python 赋值运算符
  • 从pdf中提取文本 数据清洗
  • 5.3 Python 比较运算符
  • seurat的 addmodule循环画图 等同于基因的叠加图 识别细胞类型 空转与单细胞得到的marker基因联合
  • Golang-长连接-状态推送
  • java第三方包学习之lombok
  • Java方法详解
  • node-glob通配符
  • overflow: hidden IE7无效
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • Terraform入门 - 1. 安装Terraform
  • v-if和v-for连用出现的问题
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 阿里云应用高可用服务公测发布
  • 从零搭建Koa2 Server
  • 关于List、List?、ListObject的区别
  • 回流、重绘及其优化
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 前言-如何学习区块链
  • 树莓派用上kodexplorer也能玩成私有网盘
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • ###C语言程序设计-----C语言学习(6)#
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (办公)springboot配置aop处理请求.
  • (转)项目管理杂谈-我所期望的新人
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .NET Core Web APi类库如何内嵌运行?
  • .NET HttpWebRequest、WebClient、HttpClient
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .NET 简介:跨平台、开源、高性能的开发平台
  • .NET/C# 判断某个类是否是泛型类型或泛型接口的子类型
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .NET6 开发一个检查某些状态持续多长时间的类
  • .NetCore 如何动态路由
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • /*在DataTable中更新、删除数据*/
  • /proc/interrupts 和 /proc/stat 查看中断的情况
  • ??如何把JavaScript脚本中的参数传到java代码段中
  • @Bean有哪些属性
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(朱雀组)
  • [ vulhub漏洞复现篇 ] Apache APISIX 默认密钥漏洞 CVE-2020-13945
  • [ACTF2020 新生赛]Upload 1