1. 程式人生 > >python中從大字串裡擷取小字串

python中從大字串裡擷取小字串

以一例題說明:分別用了for迴圈和while迴圈兩種方式

要尋找的大字串:

#coding:utf-8
string='<div class="item-list ni-list"><ul><li  class="first"><a href="http://www.tepintehui.com/detail/57185?ce" title="明星同款| 鍾基歐巴穿的小髒鞋5折辣!" ><span>明星同款| 鍾基歐巴穿的小髒鞋5折辣!</span></a></li><li><a href="http://www.tepintehui.com/detail/56847?ce" title="裝逼| 你們見過凌晨四點鐘的洛杉磯嗎?" ><span>裝逼| 你們見過凌晨四點鐘的洛杉磯嗎?</span></a></li><li  ><a href="http://www.tepintehui.com/detail/57127?ce" title="反人類| 世界上最乾淨的紙竟然是黃色的!" ><span>反人類| 世界上最乾淨的紙竟然是黃色的</span></a></li><li><a href="http://www.tepintehui.com/detail/57120?ce" title="科普| 吃了避孕藥之後懷的孩子能要嗎?" ><span>科普| 吃了避孕藥之後懷的孩子能要嗎?</span></a></li><li><a href="http://www.tepintehui.com/detail/57125?ce" title="真假| 9年義務升為12年制,是要取消高考嗎" ><span>真假| 9年義務升為12年制,是要取消高考嗎</span></a></li><li><a href="http://www.tepintehui.com/detail/57124?ce" title="土豪| 揭祕迪士尼見不得光的33號俱樂部" ><span>土豪| 揭祕迪士尼見不得光的33號俱樂部</span></a></li><li  ><a href="http://www.tepintehui.com/detail/41008?ce" title="吐槽| 男人單身太久會沒感覺?" ><span>吐槽| 男人單身太久會沒感覺?</span></a></li><li  ><a href="http://www.tepintehui.com/detail/23488?ce" title="冷知識| 為什麼鏡子是左右顛倒不是上下呢" ><span>冷知識| 為什麼鏡子是左右顛倒不是上下呢</span></a></li><li  ><a href="http://www.tepintehui.com/detail/37213?ce" title="新玩法| 這年頭情侶之間種草莓已經out了!" ><span>新玩法| 這年頭情侶之間種草莓已經out了!</span></a></li><li  ><a href="http://www.tepintehui.com/detail/11411?ce" title="四壁| 老美說鳳姐把范冰冰秒成渣,你怎麼看" ><span>四壁| 老美說鳳姐把范冰冰秒成渣,你怎麼看</span></a></li><li  ><a href="http://www.tepintehui.com/detail/37456?ce" title="憑什麼| 個人挖墓是盜墓,國家挖是考古?" ><span>憑什麼| 個人挖墓是盜墓,國家挖是考古?</span></a></li><li  ><a href="http://www.tepintehui.com/detail/40706?ce" title="福利| 要知道加這個群這麼爽!我早進了" ><span>福利| 要知道加這個群這麼爽!我早進了</span></a></li></ul></div>'

for迴圈:

#定義兩個變數:分別表示開始查詢的字串和結束的字串
#使用find函式查詢開始擷取的字串
start_str='http'
s=string.find(start_str)
#找到結束位置的字元
end_str='?ce'
e=string.find(end_str,s,len(string))
count=string.count('http')
for x in range(0,count):
    str = string[s:e + len(end_str)]
    print(str)
    #到最後可以不填end
    # s=string.find(start_str,e+len(end_str),len(string))
    s = string.find(start_str, e + len(end_str))
    e=string.find(end_str,s)
    str=string[s:e+len(end_str)]
while迴圈:
#定義兩個變數:分別表示開始查詢的字串和結束的字串
start_string='http'
end_string='?ce'
#先找第一個開始位置
start=string.find(start_string)
#只要start不等於-1,說明找到了http
while start!=-1:
    #找結束的位置
    end=string.find(end_string,start)
    #擷取字串 結束位置=結束字串的開始位置+結束字串的長度
    sub_str=string[start:end+len(end_string)]
    print(sub_str)
    #找下一個開始的位置
    #如果沒有下一個開始的位置,就相當於寫了一句start=-1,while迴圈的條件不成立,結束迴圈
    start=string.find(start_string,end)