我正在尝试完成读取文件中重复出现的行范围的任务。该行以 004 开始,以 819 结束(这些代表订单。可以是 1 个或 1000+ 个订单 - 循环范围)。我想获取在第 004 行具有特定编号的特定文件,并获取所有高达 819 的行,以及之后的任何其他匹配的 004 行。我已经尝试过,但在获取范围内的线条时遇到了困难。我正在努力思考过去,但一直碰壁。感谢任何帮助和/或指导。
我正在读取的文件是一个 .txt 文件,格式为:
...
004 54566
006 P56
008 Name
010 61758012
018 UMC
027
...
819 Staven
这是我迄今为止为读取该行而编写的代码:
os.chdir(r"C:\\mydirectory")
wrkdir = os.getcwd()
filelist = os.listdir(wrkdir)
sampleList = [filename for filename in filelist if filename.endswith(".SFX")]
filelist = sampleList
for sfx in filelist:
with open(sfx, 'r') as rfile:
lines = rfile.readlines()
for line in lines:
count+=1
if line[0:3] == '004':
gstring = line.split(' ')
#if gstring[1] == '8041': (This line did not work for me)
print line #(ultimately I will write these lines to a new file)
我在这之后画了一个空白,不确定如何在行范围 004 - 819 之间打印,如果 004 == 'certain number'?
请您参考如下方法:
基本上是一个状态机
for sfx in filelist:
with open(rxf, 'r') as rfile:
keep = False
for line in rfile:
if line.startswith('004'):
gstring = line.split() # white space
if '8041' in gstring:
keep = True
if keep and line.startswith('819'):
print line
keep = False
if keep:
print line
