⑴ python 正則表達式 我想找到字元串中成對匹配的數據 請指教
針對你所給的示例字元串,貌似無法一次性地提取出後面的那個abc的,只能提取出前面的ammmmmde:
可以這樣寫:
>>> re.findall(r'(?:\d+)([a-zA-Z]+)', 'sssa 123ammmmmde234abc aaaaa 123ammmmmde234abc llll')
['ammmmmde', 'abc', 'ammmmmde', 'abc']
原因在於:正則從左往右查找,沒有在找後面的abc時,也去找到之前的abc。
因為之前的abc,被在查找ammmmmde時,藏在中間了:
123ammmmmde234abc aaaaa 123ammmmmde
搜索過了,後面沒法再搜索。
一個折中的辦法是,用:
>>> re.findall(r'(?:\d+)([a-zA-Z]+)', 'sssa 123ammmmmde234abc aaaaa 123ammmmmde234abc llll')
['ammmmmde', 'abc', 'ammmmmde', 'abc']
找到上述的
['ammmmmde', 'abc', 'ammmmmde', 'abc']
然後你自己再另外提取,組合出來你要的:
[(ammmmmde, ammmmmde), (abc, abc)]
⑵ python 正則匹配中文問題
list列印是這樣的,這是python的系統行為,改變不了。
如果不想用循環,可以用 print(u"\n".join(items))
⑶ Python正則表達式調用後出現亂碼
是抓取蘋果手機價格的吧.
別再cmd下執行了,在python自帶的idle下F5調試,然後注意下趴下來的html是不是有亂碼
⑷ 為什麼python寫的爬蟲有時候抓取的數據是亂碼
1. 使用chrome瀏覽器,打開示例頁面http://tieba..com/p/3295185529?see_lz=1
2. 在帖子標題處,右鍵選擇"審查元素",可以看到標題的源代碼
3. 進行簡單的分析,我們需要獲取的是title後面的內容,根據頁面實際內容,我們編寫相應的正則表達式:
title_re=re.compile('<h1 class="core_title_txt " title="(.*?)"')
4. 同理,我們對帖子內容進行"審查元素",得到內容的源代碼
5. 編寫相應的正則表達式如下:
content_re=re.compile('<div id="post_content_\d*" class="d_post_content j_d_post_content ">(.*?)</div>')
6. 這樣通過urllib2打開頁面後,使用上述的正則表達式進行匹配,再對標題和文本內容進行相應的處理即可
⑸ python正則匹配不到想要的數據,感覺明明是對的啊
items = re.findall(r'',pagecode,re.S)
注意在後面要加上re.S
因為是多行匹配,下面寫了一個只能抓一頁信息的簡陋版- -
-------------------------------------------------------------------------------------------
#coding:utf-8
importurllib2,re
classdown(object):
def__init__(self):
self.user_agent='Mozilla/4.0(compatible;MSIE5.5;WindowsNT)'
self.headers={'User-Agent':self.user_agent}
defgetPage(self):
try:
url='http://hdwan.net'
request=urllib2.Request(url,headers=self.headers)
response=urllib2.urlopen(request)
pageCode=response.read().decode('utf-8')
returnpageCode
excepturllib2.URLError,e:
ifhasattr(e,'reason'):
printu'連接失敗...',e.reason
returnNone
defgetCont(self):
pageCode=self.getPage()
ifnotpageCode:
printu'頁面載入失敗...'
returnNone
items=re.findall('''<h2><ahref="(.*?)"rel="bookmark"target="_blank"title="(.*?)">.*?
</a></h2>''',pageCode,re.S)
foriinitems:
printu'電影名:%s 鏈接:%s '%(i[1],i[0])
if__name__=='__main__':
spider=down()
spider.getCont()
初學者一起加油。。。。
⑹ python中如何用正則表達式匹配漢字
name = re.search(r'導演: (.*?) 主演:.*? '.encode('utf-8'),text,re.S).group(1)
⑺ Python用正則表達式匹配含有中文的字元串,匹配不到
代碼如下:
#coding=utf-8
importre
s=u'<li><aclass="nav-first"href="/">首頁</a></li>'
r=re.compile(u'<li><asclass="[^"]*"shref="[^"]">(.*?)(?=</a></li>)')
ss=r.findall(s)
forstrinss:
printstr
運行結果:
⑻ python 用正則匹配網頁中的中文字
patt=re.compile(ur'<a.*href="(.*?)".*官方下載地址1.*</a>')
⑼ python正則表達式,這樣的字元串怎麼匹配
根據提問者的問題,解答如下:
#查找所有除最後一個非zuobi姓名
xingmings=re.findall("(?isu)'([^']+?)']);cj",txt)
xingming_last=re.search("(?isu)'([^']+?)']);$",txt)
ifxingming_last:xingmings.append(xingmings[1])
第一行:查找所有滿足條件的姓名,查找結果不包括txt的最後一個;
第二行:匹配txt的最後一個;
第三行:如果最後一個滿足條件,則追加到xingmings中。