问题
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