我正在尝试使用字符串切片从文本文件中删除某个表的所有出现,但它会一遍又一遍地拉出第一个切片。
也许我需要一个虚拟变量用于开始和结束计数?
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)
有什么建议吗?
答案 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]