我需要从文本文件中提取数据。在里面,每个学生记录由20-30行组成。我试着把每个学生的相关信息拉出来,然后放到excel里。 我可以把学生信息拉进来,因为他们的标签上有名字:,ID#,等等
我想出了如何打开文本文件,用标签提取数据,然后将其写入另一个文本文件。但是,我也需要为每个学生提供一个块(可变的行数),我不知道如何读写。你知道吗
对于每个学生来说,第一行总是以“Ref No”开头…然后是一些行,然后以“========”结尾。我不知道如何从Ref No开始读取并将所有行写入文本文件,直到达到======。然后转到下一张学生唱片。你知道吗
添加文本示例
姓名:约翰·史密斯
编号:1234456
应付金额:0.00美元
参考无日期代码费用付款余额
001234 12/6/18巴123.00 0 123.00
002345 12/7/18德1000.00 1000.00 0
总计:1123.00 1000.00 123.00
============================
姓名:萨利·史密斯
ID等
一切正常,直到你到达该区域:
outfile = open('Output.txt', 'w')
with open('ARSP_MGRIFFIT_3728.txt','r') as inFile:
for line in inFile:
line = line.strip()
if line.find( 'Name') != -1:
outfile.write(line + "\n")
if line.find( 'ID#' ) != -1:
outfile.write(line + "\n")
if line.find( 'Term...:' ) != -1:
outfile.write(line + "\n")
if line.find( 'Amount Due' ) != -1:
balance = line[:20]
outfile.write(balance + "\n")
# if line.startswith ('Reg No'):
# flag=True
# if flag:
# data.append(line)
# if line.strip().endswith('==='):
# flag=False
# outfile.write(data)
在数据块上使用regex
(Name(.[^=]|\n|\r)*)+
可以根据需要对其进行处理:说明:
()+
-outer group,它可以找到多个组Name
-确保组必须包含Name
(.[^=]|\n\r)*
匹配除=
和换行符以外的任何字符应用此方法可产生如下输出:
相关问题 更多 >
编程相关推荐