Python解析文本文件的选定部分
我正在尝试写一个程序,从一个文本文件 text.txt 中打印选定的文本部分。
text.txt 的内容是:
tickme 1.1(no.3)
lesson1-bases
lesson2-advancedfurther
para:using the dsp signals are sened via a transmitter to conver to analong signals and gets the output in the form of digital signal
tickme 2.2(no.4)
lesson1-basics2
lesson2-advanced4
para:using the DIGITAL signals are sened via a transmitter to conver to analong signals and gets the output in the form of digital signal
tickme 3.3(no.5)
lesson1-bas
lesson2-adv
para:using the dsp signals are sened via a transmitter to conver to analong signals and gets the output in the form of digital signal
这里有三个“tick me”,但我想选择特定的“tickme 2.2(第4个)”,我需要在“tickme 3.3(第5个)”开始之前解析文本。
所以,如果段落中有“DIGITAL”,那么它应该打印“lesson1”。因为这会造成歧义,我想选择文本文件的一个范围。
输出:
lesson1-basics2
由于所有的“tick me”都有“lesson 1”这个共同点,我需要选择一个特定的区域,从“tickme 2.2(第4个)”到“tickme 3.3(第5个)”进行解析。有没有办法获取特定区域的范围并进行解析呢?
程序:它没有选择特定的范围。
searchstring=""
with open('text.txt','r') as file:
for line in file:
if 'tickme' in line:
searchstring=line
if searchstring!='':
if 'DIGITAL' in line:
print searchstring
print line
请帮帮我!非常感谢你的回答。
2 个回答
0
你可以把范围作为函数的参数来指定。然后,你可以把这个范围内的所有行保存到一个列表里,接着可以用这个列表里的内容进行进一步的处理。
#Function to accept file name, start line of range, end line of range
#Returns a list of lines within that range
def select_range(filename, start_range, end_range):
f = open(filename, 'r')
selected_lines=[]
start=0
for line in f:
if start_range in line:
start=1
if end_range in line:
start=0
return selected_lines
if start==1:
selected_lines.append(line)
return selected_lines
lines=select_range("tickme.txt","tickme 2.2(no.4)","tickme 3.3(no.5)")
print lines
0
把文件分成几个小批次,像这样:
with open('txt.txt') as f:
batches = []
t = []
for l in line:
if 'tickme' in l:
# Start a new bactch after saving the previous batch
if t: batches.apend(t)
t = [l.strip()]
else:
if len(l.strip()) > 1: t.append(l.strip())
这样做之后,事情就变得简单多了……