如何从r中的文本文件中提取特定的文本部分



我有许多文本文件,其中包含下面给出的文本。

\\纸张:hep th/921003

发件人:DIJKGRAAF%IASSNS.BITNET@pucc.PRINCETON.EDU

日期:美国东部时间92年1月2日星期四14:06(54kb)

题目:交集理论、可积层次和拓扑场论

作者:Robbert Dijkgraaf

评论:73页,大部分数字不包括在内。在关于"量子场论中的新对称原理"的卡吉斯暑期学校1991年7月16日至27日。

\\在这些讲义中,我们回顾了交叉点之间的各种关系Riemann曲面的模空间理论,KdV的可积层次类型、矩阵模型和拓扑量子场论。我们在中解释特别是为什么Kontsevich自然考虑的类型的矩阵积分表现为与最小模型相关联的tau函数。我们的出发点是拓扑(p,其中所谓的Baker-Akhiezer函数由(广义)Airy给出作用\\

我有10个文件夹,范围从1992年到2003年。每个文件夹都包含数千个文件。每个文件都有上面给出的结构。我想提取每个文件的最后一部分并保存在新文件中。这部分是论文的摘要。每个文件都有不同的摘要。我已经为我的问题编写了以下代码,但无法获得目标。

for(j in 1992:1992)
{
dir.create(paste("C:\Users\Abdul Samad Alvi\Desktop\mydata\",j, sep = ""))
setwd(paste("C:\Users\Abdul Samad Alvi\Desktop\dataset\",j, sep = ""))
listoffile=list.files()
for(i in 1:length(listoffile))
{
setwd(paste("C:\Users\Abdul Samad Alvi\Desktop\dataset\",j, sep = ""))
filetext=readLines(listoffile[i])
newtext=unlist(strsplit(filetext,'\\'))[3]
setwd(paste("C:\Users\Abdul Samad Alvi\Desktop\mydata\",j, sep = ""))
write.table(newtext,file = listoffile[i],sep = "")
}
}

strsplit应该会有所帮助!

text <- "\ Paper: hep-th/9201003 From: DIJKGRAAF%IASSNS.BITNET@pucc.PRINCETON.EDU Date: Thu, 2 Jan 92 14:06 EST (54kb) Title: Intersection Theory, Integrable Hierarchies and Topological Field Theory Authors: Robbert Dijkgraaf Comments: 73 pages, most figures are not included. Lectures given at the Cargese Summer School on `New Symmetry Principles in Quantum Field Theory,'
July 16-27, 1991. \ In these lecture notes we review the various relations between intersection theory on the moduli space of Riemann surfaces, integrable hierarchies of KdV type, matrix models, and topological quantum field theories. We explain in particular why matrix integrals of the type considered by Kontsevich naturally appear as tau-functions associated to minimal models. Our starting point is the extremely simple form of the string equation for the topological (p,1) models, where the so-called Baker-Akhiezer function is given by a (generalized) Airy function. \"

unlist(strsplit(text,'\\'))[3]

广义长度:

tail(unlist(strsplit(text,'\\')), 1)

如果文本中的模式是总是一个空行,后面跟着\,那么您可以像这样提取文本(假设your_text是单个字符串):

library(stringr)
str_extract(string = your_text, pattern = "(?<=n\\)(.*)(?=\\)")

这应该可以解决你正在努力解决的最大问题。

响应注释的添加:为了获得一个大字符串,而不是一个字符串向量,您可以使用带有塌陷参数的paste0()

filetext <- readLines("001.txt")
filetext <- paste0(filetext, collapse = " ")

之后,您可以应用答案开头描述的一般情况:

newtext <- str_extract(string = filetext, pattern = "(?<=\s{2}\\\\)(.*)(?=\\\\)") 

相关内容

  • 没有找到相关文章

最新更新