解压缩文件的某个部分,并写入到一个新文件

问题描述 投票:-3回答:2

我想提取一个文件(TXT格式)的某一部分,但这些部件将会重复数次。我想提取所有的这些,并写入到一个新的文件。

例如:这是一个文本文件,它有一些不同的模式。

AAAAAA

\ BEGIN {定理} AAAAAAAAAA \ {端定理}

YYYY

\ {开始}定理

AAAAAAAAAA

\ {端定理}

\ {开始}定理AAAAAAAAAA

\ {端定理}

我想提取和\ {结束}定理包括\ {开始}定理和\ {结束}定理每\ {开始}定理之间的所有行,然后他们在一个新的文本文件编写。下面是一个代码我试过,但将输出没有在我的写作文件。

inFile = open("infile.txt")
outFile = open("outfile.txt", "w")
keepCurrentSet = False
for line in inFile:
    if line.startswith("\end{theorem}"):
        keepCurrentSet = False
    index +=1
    if keepCurrentSet:
        outFile.write(line)

    if line.startswith("\begin{theorem} "):
        keepCurrentSet = True
        index1 +=1
inFile.close()
outFile.close()
python-3.x
2个回答
0
投票

您可以通过正则表达式实现这一目标。我不把代码读取和写入一个文本文件,假设你知道这个部分!

##text = Your text file in this variable
import re
p =r'(\bHeadingA\b.*?\bHeadingB\b)' ## Write the name of actual "A" and "B" from which you need to extract text in place of HeadingA and HeadingB
m =re.findall(p, text, re.I|re.M|re.DOTALL)
print(m)  ## Write m in any new text file

0
投票

您应该使用正则表达式(documentation here)。

在部分划分问题。

正如在编程的每一个问题,你应该把它分成更小的问题。在你的情况我会做下列方式:

1.找到你需要的单词的出现。

2.获取每个外观之间的范围内。

3.将文本复制到一个新的文件。

让我们来解决这个问题的部分:为了找到事件,您可以使用正则表达式中的find()方法(简称正则表达式)。这会告诉你每次出现在您的字时的指数。你应该为A和B分别做到这一点,所以你知道哪里是每个。

注意:这样做的一个更先进的方法是建立像下面这样的正则表达式:(A)(*)(B)),因为这将匹配A的外观和B的一个之间的一切,这也是比较容易。

至于第二和第三步,他们是非常简单的,一旦你理解了第一个。

祝好运!

© www.soinside.com 2019 - 2024. All rights reserved.