试图从文本文件中提取有用的信息块

时间:2011-07-20 16:49:47

标签: python string

我正在尝试使用字符串切片从文本文件中删除某个表的所有出现,但它会一遍又一遍地拉出第一个切片。

也许我需要一个虚拟变量用于开始和结束计数?

result = ''  
start = 'start of stuff I want'  
end = 'end of stuff I want'  
otn = o.read()  
count = otn.count(start)  
s = 0  
e = 0  
for i in range(count):  
    s = otn.find(start, s)  
    e = otn.find(end, s)  
    result = result + otn[s:e]  
print(result)  

有什么建议吗?

3 个答案:

答案 0 :(得分:2)

试试这个。它更像是python-y并且可以重复使用:

def extract_delimited_data(data, begin_delimiter, end_delimiter):
    s = data.find(begin_delimiter)

    while s != -1:
        e = data.find(end_delimiter, s + len(begin_delimiter))

        s += len(begin_delimiter)
        yield data[s:e]

        s = data.find(begin_delimiter, e + len(end_delimiter))

data = 'foo<bar>hello<world>'

print list(extract_delimited_data(data, '<', '>'))

输出:

['bar', 'world']

答案 1 :(得分:1)

我相信要查找的第二个参数应该是s + 1.查找将在给定索引处或之后查找内容,因此如果给定索引指向匹配,它将再次找到它。

因此,s的初始值应为-1。

答案 2 :(得分:0)

我认为你的意思是

for i in range(count):  
    s = otn.find(start, e)  #start looking after the end of the previous data
    e = otn.find(end, s)    #start looking after the above beginning
    result = result + otn[s:e]