我是使用正则表达式的新手。在python中使用正则表达式来返回特定单词之间的大写单词
我在形式
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部分之间的所有标题,并将它们存储在不同的列表中。到目前为止,我有
matchedtext = re.findall('(?<=PART) (.*?) (?=PART)', text, re.DOTALL)
如果我理解正确的话,这些变通一下应该使用部分作为一种基点和抢之间的文本。但是,在运行代码时,匹配文本不会填充任何内容。
我的问题的第二部分是一旦我有部分不同事件之间的文本部分如何保存列表中每个标题的字符串的大写标题。我的文档中的一些字符串包含小写字母,但我只想要所有字母都是大写字母。
因此,总结一下如何获取字符串中特定单词之间的文本,并且一旦我拥有这些单词,我如何才能将单词保存为列表中的单个字符串。
感谢您的帮助! :D
好吧,分裂是一个很酷的技巧,但我不知道isupper会的一对夫妇的原因工作。有时我的字符串包含带有句子的子句,所以isupper会在句子的开头抓住大写字母。我尝试使用isupper真正快速与上=''.join([c for c in text_between_parts if c。isupper()]),它也没有忽略数字。这就是为什么我试图使用正则表达式 – Jstuff
如果s.isupper()和s.isalpha()]' –
对不起,这是一个newby问题,请尝试'[s for s in c.split()for c in textsbetweenbetweenparts ,但是该代码不起作用,因为它将文本返回3次。我想了解使用这个http://stackoverflow.com/questions/17006641/single-line-nested-for-loops发生了什么,但我似乎无法理解它,你能解释给我吗?谢谢 – Jstuff