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())