在python中写入文件时错误拆分内容

时间:2012-02-01 00:40:50

标签: python string split

我有一个输入.txt文件,该文件是从pdf转换而来的  我还有50个轮廓字(关键字),通常在输入文件中已知 对于50个大纲单词中的每一个,我创建了一个输出文件,我的目的是根据输入中找到的大纲单词,将输入.txt文件的内容写入相关的输出文件中来分割输入.txt文件的内容。 p>

大纲单词可以在整个文本中找到,但我们专门针对“标题”,这些标题是由它们包含前面和后面跟有换行符的轮廓字这一事实所标识的。我使用正则表达式,例如第一个轮廓字:

t = re.search("\nAbduction\n",content, re.I)

但是对于每个可能的标题我还有49个这样的。我知道这个t可能不会返回一个值,那么我应该怎么做才能为所有可能的标题返回一个值?
第二个问题:当识别出特定标题时,我需要将后面的文本输出到相应的输出文件,直到找到另一个标题(或EOF)。我怎么能这样做?

欢迎任何帮助。

[编辑] 此问题的文字经过重新修改,重组。为这种繁重的编辑道歉;它通常最好保持接近原始文本,但在这种情况下,有一个更重的手看起来很有帮助......如果您不这么认真,请检查以前的版本[或还原编辑]!

[重新编辑] (从文字OP发布作为答案)
.txt文件的示例如下:

Abduction 

Definition
Abduction is a form of reasoning , sometimes described
as “deduction in reverse,” Abduction whereby given a rule that
“A follows from B” and the observed result of “A” we
infer the condition “B” of the rule. More generally,
given a theory, T , modeling a domain of interest and
an observation, “A,” we infer a hypothesis “B” such that

Accuracy

Definition
Accuracy refers to a measure of the degree to which the
predictions of a (cid:55)model match the reality being mod.

这就像包含50个标题的文件末尾一样。我已经为每个标题名称创建了文件。我写了一个像;

这样的函数
def TextBetween(self, s, leader, trailer):
    end_of_leader = s.index(leader) + len(leader)
    if trailer == " ":
        return s[end_of_leader:]
    else :
        start_of_trailer = s.index(trailer, end_of_leader)
        return s[end_of_leader:start_of_trailer]

这计算领导者和预告片之间的内容,所以问题是当我决定领导者和预告片我想使用空格来找到正确的标题。因为我使用我在我的问题中提到的正则表达式。我创建了每个标题都有50个正则表达式,并且在写入文件时想要使用它们,但我不知道如何实现它。

1 个答案:

答案 0 :(得分:1)

如果您发布了input.txt文件的示例,那么您的问题会更清楚,但此代码可能就是您尝试执行的操作:

keywords = ["Abduction", "Foobar"]
inf = open("infile.txt")
outf = None
for l in inf:
    if l[:-1] in keywords:
        if outf != None:
            outf.close()
        outf = open(l[:-1] + ".txt", "w")
    elif outf != None:
        outf.write(l)

这将为文档的每个部分创建一个文件,以其前面的关键字命名。因此,如果我正确地解释您并且文件看起来像

Abduction
Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Foobar
Ut enim ad minim veniam, quis nostrud exercitation ullamco
laboris nisi ut aliquip ex ea commodo consequat. Duis aute
irure dolor in reprehenderit in voluptate velit esse cillum

最终会有两个输出文件,一个名为Abduction.txt,另一个名为Foobar.txt,每个文件都有相应的文本部分。我确定您的特定应用程序需要更多工作,但这应该让您走在正确的轨道上。