使用Python的选择性文本

使用Python的选择性文本,python,text,selection,Python,Text,Selection,我是python的初学者,我正在用它写硕士论文,所以我知道的不多。我有一堆年度报告(txt格式)文件,我想选择“ITEM1.”和“ITEM2.”之间的所有文本。我正在使用重新包装。我的问题是,有时候,在这10公里中,有一个叫做“项目1A”的部分。我希望代码能够识别这一点,并在“ITEM1A.”处停止,并在输出中输入“ITEM1.”和“ITEM1A.”之间的文本。在我附加到这篇文章的代码中,我试图让它停在“ITEM1A.”处,但它没有停下来,它会继续,因为“ITEM1A.”在文件中多次出现。我会让

我是python的初学者,我正在用它写硕士论文,所以我知道的不多。我有一堆年度报告(txt格式)文件,我想选择“ITEM1.”和“ITEM2.”之间的所有文本。我正在使用重新包装。我的问题是,有时候,在这10公里中,有一个叫做“项目1A”的部分。我希望代码能够识别这一点,并在“ITEM1A.”处停止,并在输出中输入“ITEM1.”和“ITEM1A.”之间的文本。在我附加到这篇文章的代码中,我试图让它停在“ITEM1A.”处,但它没有停下来,它会继续,因为“ITEM1A.”在文件中多次出现。我会让它在第一眼看到的时候停下来。代码如下:

import os
import re

#path to where 10k are
saved_path = "C:/Users/Adrian PC/Desktop/Thesis stuff/10k abbot/python/Multiple 10k/saved files/"

#path to where to save the txt with the selected text between ITEM 1 and ITEM 2
selected_path = "C:/Users/Adrian PC/Desktop/Thesis stuff/10k abbot/python/Multiple 10k/10k_select/"

#get a list of all the items in that specific folder and put it in a variable
list_txt = os.listdir(saved_path)


for text in list_txt:
    file_path = saved_path+text
    file = open(file_path,"r+", encoding="utf-8")
    file_read = file.read()
    # looking between ITEM 1 and ITEM 2
    res = re.search(r'(ITEM[\s\S]*1\.[\w\W]*)(ITEM+[\s\S]*1A\.)', file_read)
    item_text_section = res.group(1)
    saved_file = open(selected_path + text, "w+", encoding="utf-8")     # save the file with the complete names
    saved_file.write(item_text_section)                                 # write to the new text files with the selected text
    saved_file.close()                                                  # close the file
    print(text)                                                         #show the progress
    file.close()

如果有人对如何解决这个问题有任何建议,那就太好了。谢谢大家!

尝试以下正则表达式:

ITEM1\.([\s\S]*?)ITEM1A\.

添加问号使其不贪婪,因此它将在第一次出现时停止

尝试以下正则表达式:

ITEM1\.([\s\S]*?)ITEM1A\.

添加问号使其不贪婪,因此它将在第一次出现时停止

您是否可以发布一个数据的(匿名)样本?这将对我们有所帮助。我还在这个网站上附上了一份完整的年度报告:。希望它能帮助你发布一个(虚拟化的)数据样本?这将对我们有所帮助。我还在这个网站上附上了一份完整的年度报告:。希望如此helps@Adrian别忘了接受艾哈迈德的答案,而且,下次,试着编辑你的答案,以澄清而不是“回答”这个问题:)@axm_u;是的,我会的。很抱歉给你带来了困惑。这是我的第一篇文章。将铭记未来!再次感谢你@阿德里安别忘了接受艾哈迈德的答案,而且,下次,试着编辑你的答案,以澄清而不是“回答”这个问题:)@axm_uuu是的,我会的。很抱歉给你带来了困惑。这是我的第一篇文章。将铭记未来!再次感谢你!