Python 如何提取文本文件中的特定行

Python 如何提取文本文件中的特定行,python,string,Python,String,我正在对一个大文档进行文本挖掘。我想提取一个特定的行 下一页续页续页文件参考号:第4页,共16页 SPE2DH-20-T-0133剖面图B 请购单:0081939954 NSN/材料:6530015627381 项目说明 瓶子,安全帽 瓶,安全帽RPOO1:DLA采购包装要求 RAQO1:本文件包含技术和/或质量要求(由“R”或“I”号标识),全文载于DLA技术和质量要求总清单,网址为: 我想立即在项目描述下提取描述 我尝试过许多不成功的尝试 我最近的尝试是: for line in text

我正在对一个大文档进行文本挖掘。我想提取一个特定的行

下一页续页续页文件参考号:第4页,共16页
SPE2DH-20-T-0133剖面图B
请购单:0081939954 NSN/材料:6530015627381
项目说明
瓶子,安全帽
瓶,安全帽RPOO1:DLA采购包装要求
RAQO1:本文件包含技术和/或质量要求(由“R”或“I”号标识),全文载于DLA技术和质量要求总清单,网址为:
我想立即在
项目描述
下提取描述

我尝试过许多不成功的尝试

我最近的尝试是:

for line in text:
    if 'ITEM' and 'DESCRIPTION'in line:
        print ('Possibe Descript:\n', line)
但它没有找到文本


是否有方法查找
项目描述
并获取其后面的行或类似内容?

以下函数将在某些给定的
模式
下的行上查找描述,例如“项目描述”,并忽略其间可能出现的任何空行。但是,请注意,当模式存在时,函数不会处理特殊情况,但描述不会

txt = '''
CONTINUED ON NEXT PAGE CONTINUATION SHEET REFERENCE NO. OF DOCUMENT BEING CONTINUED:    PAGE 4 OF 16 PAGES

SPE2DH-20-T-0133 SECTION B

PR: 0081939954 NSN/MATERIAL: 6530015627381

ITEM DESCRIPTION

BOTTLE, SAFETY CAP

BOTTLE, SAFETY CAP RPOO1: DLA PACKAGING REQUIREMENTS FOR PROCUREMENT

RAQO1: THIS DOCUMENT INCORPORATES TECHNICAL AND/OR QUALITY REQUIREMENTS (IDENTIFIED BY AN 'R' OR AN 'I' NUMBER) SET FORTH IN FULL TEXT IN THE DLA MASTER LIST OF TECHNICAL AND QUALITY REQUIREMENTS FOUND ON THE WEB AT:
'''
我假设您将文本作为文本字符串,因此下面的函数将其拆分为一个行列表

pattern = "ITEM DESCRIPTION" # to search for

def find_pattern_in_txt(txt, pattern):
    lines = [line for line in txt.split("\n") if line] # remove empty lines
    if pattern in lines: return lines[lines.index(pattern)+1]
    return None

print(find_pattern_in_txt(txt, pattern)) # prints: "BOTTLE, SAFETY CAP"
这样测试:

description = False
for line in text:
    if 'ITEM DESCRIPTION' in line:
        description = True
    if description:
        print(line)
我知道这会管用,但你需要一些东西来停止阅读描述,也许是像这样的另一个标题

description = False
for line in text:
    if 'ITEM DESCRIPTION' in line:
        description = True
    if description:
        print(line)
    if "END OF SOMETHING":
        description = False

使用字符串函数“find”,如下所示,“find”将返回您正在查找的字符串的索引,因此正数表示您已找到它

代码:


使用正则表达式

import re
pattern = re.compile("(ITEM DESCRIPTION)\n.*") #if the information is directly 
below without white space
pattern = re.compile("(ITEM DESCRIPTION)\n\n.*") #if there is a white space 
before the information


for i, line in enumerate(open('file.txt')):
    for match in re.finditer(pattern, line):
        print 'Found on line %s: %s' % (i+1, match.group())

您能否向我们展示更多的代码,例如您如何打开您的文件,以及预期的输出?也可能重复,请参见此处:
f=open("aa.txt","r")

a=[]

for i in f:

  a.append(i.split())

t1=0

for j in range(len(a)):

   for i in range(len(a[j])):

       if(a[j][i]=="ITEM" and a[j][i+1]=="DESCRIPTION"):

           t1=j

for i in range(t1+1,len(a)):

    for j in range(len(a[i])):

        print(a[i][j]),
import re
pattern = re.compile("(ITEM DESCRIPTION)\n.*") #if the information is directly 
below without white space
pattern = re.compile("(ITEM DESCRIPTION)\n\n.*") #if there is a white space 
before the information


for i, line in enumerate(open('file.txt')):
    for match in re.finditer(pattern, line):
        print 'Found on line %s: %s' % (i+1, match.group())