[英]Using regex in python to return capitalized words between a specific word
我是使用正则表达式的新手。
我有一个字符串形式
Waco, Texas
Unit Dose 13 and
SECTION 011100 SUMMARY OF WORK
INDEX PAGE
PART 1. - GENERAL 1
1.1. RELATED DOCUMENTS 1
1.2. PROJECT DESCRIPTION 1
1.3. OWNER 1
1.4. ARCHITECT/ENGINEER 2
1.5. PURCHASE CONTRACTS 2
1.6. OWNER-FURNISHED ITEMS 2
1.7. CONTRACTOR-FURNISHED ITEMS 3
1.8. CONTRACTOR USE OF PREMISES 3
1.9. OWNER OCCUPANCY 3
1.10. WORK RESTRICTIONS 4
PART 2. - PRODUCTS - NOT APPLICABLE 4
PART 3. - EXECUTION - NOT APPLICABLE 4
我为多余的空白表示歉意,但这是我解析以获取字符串的单词document的形式。
我需要捕获第1部分,第2部分和第3部分之间的所有标题,并将它们存储在其他列表中。 到目前为止,我有
matchedtext = re.findall('(?<=PART) (.*?) (?=PART)', text, re.DOTALL)
如果我理解正确,这些环顾四周应该将PART用作一种基点,并在两者之间获取文本。 但是,当我运行代码时,matchedtext不会填充任何内容。
问题的第二部分是,当我在不同出现的PART之间插入文本时,如何仅将大写的标题保存在列表中,并为每个标题添加字符串。 我在单词文档中的一些字符串包含小写单词,但是我只想全部用大写字母表示。
因此,总结一下如何捕获字符串中特定单词之间的文本,一旦有了它们,如何将单词另存为列表中的单个字符串。
谢谢您的帮助! :D
您甚至不需要使用正则表达式,只需对字符串使用split
函数。 如果s是您的字符串名称,则为:
s.split('PART')
这将包括第一个PART之前的文本,因此不要使用列表的第一个元素:
texts_between_parts = s.split('PART')[1:]
您稍后可以使用字符串方法isupper
检查单词是否全部大写。
我会忘记抓住第1部分和第2部分之间的所有内容,等等。 我将使用以下正则表达式解析每一行,并使用第1组来确定标题的分组。
^(\d)(\.|\d)+\s+([^a-z]+?)\s+\d$
第一组是零件编号/部分
第2组是子部分
第3组是标题
import re
p = re.compile('^(\d)(\.|\d)+\s+([^a-z]+?)\s+\d$')
m = p.match( '1.4. ARCHITECT/ENGINEER 2' )
if m:
print('Match found: ', m.groups())
else:
print('No match')
找到匹配项:('1','。','ARCHITECT / ENGINEER')
import re
p = re.compile('^(\d)(\.|\d)+\s+([^a-z]+?)\s+\d$')
m = p.match( '1.4. ARCHITECT/ENGINEER 2' )
if m:
print('Section: ', m.group(1))
print('Heading: ', m.group(3))
else:
print('No match')
# Output
# Section: 1
# Heading: ARCHITECT/ENGINEER
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.