如何在Python上获取表达式中的字母
我有这样的表达:如何在Python上获取表达式中的字母,python,expression,letters-and-numbers,Python,Expression,Letters And Numbers,我有这样的表达: <a class="a-link-normal" href="https://www.amazon.it/Philips-GC8735-PerfectCare-Generatore-Vapore/dp/B01J5FGW66/ref=gbph_img_s-3_7347_c3de3e94?smid=A11IL2PNWYJU7H&pf_rd_p=82ae57d3-a26a-4d56-b221-3155eb797347&pf_rd_s=slot-3
<a class="a-link-normal" href="https://www.amazon.it/Philips-GC8735-PerfectCare-Generatore-Vapore/dp/B01J5FGW66/ref=gbph_img_s-3_7347_c3de3e94?smid=A11IL2PNWYJU7H&pf_rd_p=82ae57d3-a26a-4d56-b221-3155eb797347&pf_rd_s=slot-3&pf_rd_t=701&pf_rd_i=gb_main&pf_rd_m=A11IL2PNWYJU7H&pf_rd_r=MDQJBKEMGBX38XMPSHXB" id="dealImage"></a>
我需要得到“/dp/”(B01J5FGW66)旁边的10个字母
如何创建一个函数来完成此操作?使用正则表达式:
import re
s = '<a class="a-link-normal" href="https://www.amazon.it/Philips-GC8735-PerfectCare-Generatore-Vapore/dp/B01J5FGW66/ref=gbph_img_s-3_7347_c3de3e94?smid=A11IL2PNWYJU7H&pf_rd_p=82ae57d3-a26a-4d56-b221-3155eb797347&pf_rd_s=slot-3&pf_rd_t=701&pf_rd_i=gb_main&pf_rd_m=A11IL2PNWYJU7H&pf_rd_r=MDQJBKEMGBX38XMPSHXB" id="dealImage"></a>'
print(re.search(r"dp\/([A-Za-z0-9]{10})\/", s)[1])
捕获组由()分隔,匹配10(通过{10})个小写字母(a-z)、大写字母(a-z)和数字(0-9):
结束于“/”
:
使用re.search
我们可以在字符串s
中搜索该表达式,并使用[1]
访问第一个捕获组的结果
注意如果找不到匹配项,您可能需要添加额外代码:
m = re.search(r"dp\/([A-Za-z0-9]{10})\/", s)
if m is not None:
print(m[1])
else:
# if nothing is found, search return None
print("No match")
使用正则表达式:
import re
s = '<a class="a-link-normal" href="https://www.amazon.it/Philips-GC8735-PerfectCare-Generatore-Vapore/dp/B01J5FGW66/ref=gbph_img_s-3_7347_c3de3e94?smid=A11IL2PNWYJU7H&pf_rd_p=82ae57d3-a26a-4d56-b221-3155eb797347&pf_rd_s=slot-3&pf_rd_t=701&pf_rd_i=gb_main&pf_rd_m=A11IL2PNWYJU7H&pf_rd_r=MDQJBKEMGBX38XMPSHXB" id="dealImage"></a>'
print(re.search(r"dp\/([A-Za-z0-9]{10})\/", s)[1])
捕获组由()分隔,匹配10(通过{10})个小写字母(a-z)、大写字母(a-z)和数字(0-9):
结束于“/”
:
使用re.search
我们可以在字符串s
中搜索该表达式,并使用[1]
访问第一个捕获组的结果
注意如果找不到匹配项,您可能需要添加额外代码:
m = re.search(r"dp\/([A-Za-z0-9]{10})\/", s)
if m is not None:
print(m[1])
else:
# if nothing is found, search return None
print("No match")
我假设你总是想要dp(下一条路线)旁边的斜线之间的内容,而这10个字符是不相关的。有点笨重,但这是可行的:
>>> x = '<a class="a-link-normal" href="https://www.amazon.it/Philips-GC8735-PerfectCare-Generatore-Vapore/dp/B01J5FGW66/ref=gbph_img_s-3_7347_c3de3e94?smid=A11IL2PNWYJU7H&pf_rd_p=82ae57d3-a26a-4d56-b221-3155eb797347&pf_rd_s=slot-3&pf_rd_t=701&pf_rd_i=gb_main&pf_rd_m=A11IL2PNWYJU7H&pf_rd_r=MDQJBKEMGBX38XMPSHXB" id="dealImage"></a>'
>>> splits = x.split("/")
>>> dp_index = splits.index('dp')
>>> result = splits[dp_index+1] # Get the next one over
>>> result
'B01J5FGW66'
用法可能如下所示:
html_str = '<a class="a-link-normal" href="https://www.amazon.it/Philips-GC8735-PerfectCare-Generatore-Vapore/dp/B01J5FGW66/ref=gbph_img_s-3_7347_c3de3e94?smid=A11IL2PNWYJU7H&pf_rd_p=82ae57d3-a26a-4d56-b221-3155eb797347&pf_rd_s=slot-3&pf_rd_t=701&pf_rd_i=gb_main&pf_rd_m=A11IL2PNWYJU7H&pf_rd_r=MDQJBKEMGBX38XMPSHXB" id="dealImage"></a>'
route_next_to_dp = get_route_next_to_dp(html_str)
print(route_next_to_dp)
根据需要。我假设您总是想要dp(下一条路线)旁边的斜线之间的内容,并且10个字符有点不相关。有点笨重,但这是可行的:
>>> x = '<a class="a-link-normal" href="https://www.amazon.it/Philips-GC8735-PerfectCare-Generatore-Vapore/dp/B01J5FGW66/ref=gbph_img_s-3_7347_c3de3e94?smid=A11IL2PNWYJU7H&pf_rd_p=82ae57d3-a26a-4d56-b221-3155eb797347&pf_rd_s=slot-3&pf_rd_t=701&pf_rd_i=gb_main&pf_rd_m=A11IL2PNWYJU7H&pf_rd_r=MDQJBKEMGBX38XMPSHXB" id="dealImage"></a>'
>>> splits = x.split("/")
>>> dp_index = splits.index('dp')
>>> result = splits[dp_index+1] # Get the next one over
>>> result
'B01J5FGW66'
用法可能如下所示:
html_str = '<a class="a-link-normal" href="https://www.amazon.it/Philips-GC8735-PerfectCare-Generatore-Vapore/dp/B01J5FGW66/ref=gbph_img_s-3_7347_c3de3e94?smid=A11IL2PNWYJU7H&pf_rd_p=82ae57d3-a26a-4d56-b221-3155eb797347&pf_rd_s=slot-3&pf_rd_t=701&pf_rd_i=gb_main&pf_rd_m=A11IL2PNWYJU7H&pf_rd_r=MDQJBKEMGBX38XMPSHXB" id="dealImage"></a>'
route_next_to_dp = get_route_next_to_dp(html_str)
print(route_next_to_dp)
根据需要。试试这个:它基本上使用正则表达式,然后计算接下来的10个字符串,并检查是否找到了它
import re
my_string='<a class="a-link-normal" href="https://www.amazon.it/Philips-GC8735-PerfectCare-Generatore-Vapore/dp/B01J5FGW66/ref=gbph_img_s-3_7347_c3de3e94?smid=A11IL2PNWYJU7H&pf_rd_p=82ae57d3-a26a-4d56-b221-3155eb797347&pf_rd_s=slot-3&pf_rd_t=701&pf_rd_i=gb_main&pf_rd_m=A11IL2PNWYJU7H&pf_rd_r=MDQJBKEMGBX38XMPSHXB" id="dealImage"></a>'
m = re.search(r"dp\/([A-Za-z0-9]{10})\/", my_string)
if m.group(1):
print(m.group(1))
重新导入
我的_字符串=“”
m=重新搜索(r“dp\/([A-Za-z0-9]{10})\/”,我的字符串)
如果m.组(1):
印刷品(m.group(1))
试试这个:它基本上使用正则表达式,然后计算接下来的10个字符串并检查是否找到了它
import re
my_string='<a class="a-link-normal" href="https://www.amazon.it/Philips-GC8735-PerfectCare-Generatore-Vapore/dp/B01J5FGW66/ref=gbph_img_s-3_7347_c3de3e94?smid=A11IL2PNWYJU7H&pf_rd_p=82ae57d3-a26a-4d56-b221-3155eb797347&pf_rd_s=slot-3&pf_rd_t=701&pf_rd_i=gb_main&pf_rd_m=A11IL2PNWYJU7H&pf_rd_r=MDQJBKEMGBX38XMPSHXB" id="dealImage"></a>'
m = re.search(r"dp\/([A-Za-z0-9]{10})\/", my_string)
if m.group(1):
print(m.group(1))
重新导入
我的_字符串=“”
m=重新搜索(r“dp\/([A-Za-z0-9]{10})\/”,我的字符串)
如果m.组(1):
印刷品(m.group(1))
非常感谢,我了解所有内容,但我有一个最后的错误:return\u compile(pattern,flags)。search(string)TypeError:预期的字符串或类似于我用str()尝试的字节的对象但是不要工作第二个参数是什么类型的变量你给了搜索
类型是如何解决这个问题的?尝试添加[“href”]
你说的“添加”是什么意思?我有一个变量,它包含了页面的片段。我如何才能进行“添加”?非常感谢,我了解所有内容,但我有一个最后的错误:return _compile(pattern,flags)。search(string)TypeError:预期的字符串或类似于我用str()尝试的字节的对象但是不要工作第二个参数是什么类型的变量你给了搜索
类型是如何解决这个问题的?尝试添加[“href”]
你说的“添加”是什么意思?我有一个变量,其中包含了页面的刮擦我如何才能做“添加”?