Extract Paragraph with specific words between two similar titiles

岁酱吖の 提交于 2020-01-11 11:47:30

问题


my text file contains, paragraphs something like this.

summary

A result oriented and dedicated professional with three years’ experience in Software Development. A proactive individual with a logical approach to challenges, performs effectively even within a highly pressurised working environment.

summary

Oct 28th, 2010 – Till date  Cognizant Technology Solutions      


Project #1

Title           Wealth Passport – R7.3
Client                    Northern Trust
Operating System    Windows XP
Technologies        J2EE, JSP, Struts, Oracle, PL/SQL
Team Size       3
Role            Team Member
Period                    22nd Aug’ 2013 - Till Date    
Project Description
Wealth Passport R7.3 release aims at enhancements in four projects SGY, PMM, WPA and WPX. This primarily involves analysing existing issues in the four applications and enhancements to some of the functionalities.
Role and Responsibilities
Handled dockets in SGY and PMM applications.
Done root cause analysis to existing issues in a short span of time.
Designed and developed enhancements in PMM application.
Preparing Unit Test cases for the developed Java modules and executing them.


Project #2
Title           PFS Development – WP Filecabinet and R7.2
Client                    Northern Trust
Operating System    Windows XP
Technologies        J2EE, JSP, Struts, Weblogic Portal, Oracle, PL/SQL, UNIX, Hibernate, Spring, DOJO
Team Size       1
Role            Team Member – JavaEE Developer
Period                   18th June’ 2013 – 21st Aug’ 2013   
Project Description
PFS Development project is to provide the development services for PFS capital projects: Wealth Passport, Private Passport 6.0 and Private Passport 7.0
Wealth Passport Filecabinet provides functionality for users to store their files on our system. This enables users to create folders, upload files and view the uploaded files.  Batch upload/delete option is also available. Deleted files will be moved to Waste Bucket, from where users can restore should they wish. This project aims at improving the performance of Filecabinet which was mandated by increasing customer base and files handled by the system.

now, i would like to extract section summary which contains words like "Project", "Teamsize " without extracting the other summary section. i have tried this code below, it extracts both summary content

import re
import os
with open ('9.txt', encoding='latin-1') as infile, open ('d.txt','w',encoding='latin-1') as outfile :
    copy = False 
    for line in infile:
        if line.strip() == 'summary':
            re.compile('\r\nproject*\r\n')
            copy = True
        elif line.strip() == "summary":
            copy =False 
        elif copy:
            outfile.write(line)
        #fh = open("d.txt",'r')
        contents = fh.read()
        len(contents)

and i'm expecting a text file as d.txt to saved which contains content

 summary

    Oct 28th, 2010 – Till date  Cognizant Technology Solutions      


    Project #1

    Title           Wealth Passport – R7.3
    Client                    Northern Trust
    Operating System    Windows XP
    Technologies        J2EE, JSP, Struts, Oracle, PL/SQL
    Team Size       3
    Role            Team Member
    Period                    22nd Aug’ 2013 - Till Date    
    Project Description
    Wealth Passport R7.3 release aims at enhancements in four projects SGY, PMM, WPA and WPX. This primarily involves analysing existing issues in the four applications and enhancements to some of the functionalities.
    Role and Responsibilities
    Handled dockets in SGY and PMM applications.
    Done root cause analysis to existing issues in a short span of time.
    Designed and developed enhancements in PMM application.
    Preparing Unit Test cases for the developed Java modules and executing them.


    Project #2
    Title           PFS Development – WP Filecabinet and R7.2
    Client                    Northern Trust
    Operating System    Windows XP
    Technologies        J2EE, JSP, Struts, Weblogic Portal, Oracle, PL/SQL, UNIX, Hibernate, Spring, DOJO
    Team Size       1
    Role            Team Member – JavaEE Developer
    Period                   18th June’ 2013 – 21st Aug’ 2013   
    Project Description
    PFS Development project is to provide the development services for PFS capital projects: Wealth Passport, Private Passport 6.0 and Private Passport 7.0
    Wealth Passport Filecabinet provides functionality for users to store their files on our system. This enables users to create folders, upload files and view the uploaded files.  Batch upload/delete option is also available. Deleted files will be moved to Waste Bucket, from where users can restore should they wish. This project aims at improving the performance of Filecabinet which was mandated by increasing customer base and files handled by the system.

回答1:


To extract all summary sections that contain the words you are interested in:

split_on = 'summary\n\n'
must_contain = ['Project', 'Team Size']

with open('9.txt') as f_input, open('d.txt', 'w') as f_output:
    for part in f_input.read().split(split_on):
        if all(text in part for text in must_contain):
            f_output.write(split_on + part)



回答2:


The second conditional statement here will never run, as it has an identical condition to the first one. Meaning copy will always be True after the first instance of summary.

if line.strip() == 'summary':
    re.compile('\r\nproject*\r\n')
    copy = True
elif line.strip() == "summary":
    copy =False 

What I'd recommend is having one statement that picks up the "summary" tags (I assume these are meant to be start/end of comment blocks) - and toggle copy.

To toggle a boolean, you can simple set it to the inverse of itself:

 a = True
 a = not a
 # a is now False

For example:

 if line.strip() == 'summary':
    copy = not copy
 elif copy:
    outfile.write(line)


来源:https://stackoverflow.com/questions/46276952/extract-paragraph-with-specific-words-between-two-similar-titiles

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!