2015-12-30 33 views
-4

下面的代码是ruby表达式。我想将其转换为python代码。我该怎么做?如何将ruby正则表达式更改为python正则表达式

add_zzim\(\'(.*?)\',\'(.*?)\',\'(?<param>.*?)\',.* 

来源:

<li class="num" onClick="add_zzim('BD_AD_08','14913089','helloooo','3586312774','test');" title="contents.">14913089</li> 
<li class="num" onClick="add_zzim('BD_AD_08','14913012','helloooo','3586312774','test');" title="contents.">14913012</li> 
<li class="num" onClick="add_zzim('BD_AD_08','14913041','helloooo','3586312774','test');" title="contents.">14913045</li> 
+0

您可以用做第三个元素https://regex101.com – vks

回答

0

这里是一个非正则表达式的方法。

要提取onclick属性值,我们打算使用BeautifulSoupHTML解析器;提取add_zzim()参数值 - ast.literal_eval()

完整的工作例如:

from ast import literal_eval 

from bs4 import BeautifulSoup 

data = """ 
<ul> 
    <li class="num" onClick="add_zzim('BD_AD_08','14913089','helloooo','3586312774','test');" title="contents.">14913089</li> 
    <li class="num" onClick="add_zzim('BD_AD_08','14913012','helloooo','3586312774','test');" title="contents.">14913012</li> 
    <li class="num" onClick="add_zzim('BD_AD_08','14913041','helloooo','3586312774','test');" title="contents.">14913045</li> 
</ul> 
""" 

soup = BeautifulSoup(data, "html.parser") 

for li in soup.select("li.num"): 
    args = literal_eval(li["onclick"].replace("add_zzim", "").rstrip(";")) 
    print(args) 

打印:

('BD_AD_08', '14913089', 'helloooo', '3586312774', 'test') 
('BD_AD_08', '14913012', 'helloooo', '3586312774', 'test') 
('BD_AD_08', '14913041', 'helloooo', '3586312774', 'test') 
1
import re 
p = re.compile(ur'add_zzim\(\'(.*?)\',\'(.*?)\',\'(.*?)\',.*') 
test_str = u"<li class=\"num\" onClick=\"add_zzim('BD_AD_08','14913089','helloooo','3586312774','test');\" title=\"contents.\">14913089</li>\n<li class=\"num\" onClick=\"add_zzim('BD_AD_08','14913012','helloooo','3586312774','test');\" title=\"contents.\">14913012</li>\n<li class=\"num\" onClick=\"add_zzim('BD_AD_08','14913041','helloooo','3586312774','test');\" title=\"contents.\">14913045</li>\n" 

for i in re.findall(p, test_str): 
    print(i[2]) 

这会给你列出,然后你可以为 'PARAM'

+0

谢谢..但我想提取“helloooo”文本只。 –

+0

@차재엽你去了 –

相关问题