在python中使用regex返回特定单词之间的大写单词

2024-09-22 20:28:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我不熟悉使用regex。在

我的表格里有一根绳子

                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

我很抱歉有多余的空白,但这是我解析以获得字符串的word文档的形式。在

我需要捕获第1部分第2部分和第3部分之间的所有标题,并将它们存储在不同的列表中。到目前为止

^{pr2}$

如果我理解正确,这些环视应该使用零件作为一种基点,并抓住两者之间的文本。但是,运行代码时matchedtext不会填充任何内容。在

我的问题的第二个问题是,一旦我在部分的不同出现之间有了文本,我如何才能在一个列表中保存大写的标题,每个标题都有一个字符串。我想要的单词都是小写的。在

总结一下,我如何在一个字符串中的特定单词之间获取文本,一旦我有了它们,如何将单词作为单独的字符串保存在列表中。在

谢谢你的帮助!:天


Tags: of字符串文本标题列表notitems单词
3条回答

您甚至不需要使用regex,只需对字符串使用split函数。如果s是字符串的名称,它将是:

s.split('PART')

这将包括第一部分之前的文本,因此不要使用列表的第一个元素:

^{pr2}$

以后可以使用字符串方法isupper检查单词是否全部大写。

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

我会忘记获取第1部分和第2部分之间的所有内容,等等,我将用下面的正则表达式解析每一行,并使用group1来确定标题的分组。

^(\d)(\.|\d)+\s+([^a-z]+?)\s+\d$

组1是零件号/部分

第2组为小节

第三组是标题

^{pr2}$

Match found: ('1', '.', 'ARCHITECT/ENGINEER')

相关问题 更多 >