Python正则表达式映射值
使用python正则表达式进行提取的最佳方法是什么 所有名称和所有值? 我正在考虑获取一个Python正则表达式映射值,python,regex,Python,Regex,使用python正则表达式进行提取的最佳方法是什么 所有名称和所有值? 我正在考虑获取一个名称的列表=['rsv.usePoint','rsv.yadRequestFlg','rsv.ybnNo',…'rsv.stayTime'] 值=[0,0,'100-0000'……无]。 将它们压缩成dict并推送到数据库我不熟悉正则表达式匹配和修剪,如果有人能提供一些见解,我将不胜感激。一般来说,您不应该使用正则表达式解析任何类型的HTML,它们可以是嵌套内容。也就是说,如果您的输入仅限于您上面发布的内容
名称的列表=['rsv.usePoint','rsv.yadRequestFlg','rsv.ybnNo',…'rsv.stayTime']
值=[0,0,'100-0000'……无]。
将它们压缩成dict并推送到数据库
我不熟悉正则表达式匹配和修剪,如果有人能提供一些见解,我将不胜感激。一般来说,您不应该使用正则表达式解析任何类型的HTML,它们可以是嵌套内容。也就是说,如果您的输入仅限于您上面发布的内容,那么
re.findall
可以处理此任务:
<input type="hidden" name="rsv.usePoint" value="0">
<input type="hidden" name="rsv.yadRequestFlg" value="0">
<input type="hidden" name="rsv.ybnNo" value="100-0000">
<input type="hidden" name="rsv.cardSettleFlg" value="0">
<input type="hidden" name="rsv.cancelFee" value="0">
<input type="hidden" name="rsv.checkoutTime" value="10:00">
<input type="hidden" name="rsv.realUsePoint" value="0">
<input type="hidden" name="rsv.payReal" value="7020">
<input type="hidden" name="rsv.csBulkSettleFlg" value="0">
<input type="hidden" name="rsv.canType" value="0">
<input type="hidden" name="rsv.serviceDv" value="00">
<input type="hidden" name="rsv.stayTime" value="">
谢谢你,蒂姆,工作得很有魅力,我要读一下re。findall@Lenny_Liu我刚刚注意到,您似乎实际上希望为名称和值创建单独的列表。我已经更新了我的答案来做这件事。实际上,你提供的旧解决方案更好。对不起,把你弄糊涂了,这就是我想要的结果。matches=re.findall(r'\bname=“(.*?”)value=“(.*?”,inp)没有问题…然后在我的答案中使用上面的
匹配项,它已经是您想要的格式的2D列表。
inp = """<input type=\"hidden\" name=\"rsv.usePoint\" value=\"0\">
<input type=\"hidden\" name=\"rsv.yadRequestFlg\" value=\"0\">
<input type=\"hidden\" name=\"rsv.ybnNo\" value=\"100-0000\">
<input type=\"hidden\" name=\"rsv.cardSettleFlg\" value=\"0\">
<input type=\"hidden\" name=\"rsv.cancelFee\" value=\"0\">
<input type=\"hidden\" name=\"rsv.checkoutTime\" value=\"10:00\">
<input type=\"hidden\" name=\"rsv.realUsePoint\" value=\"0\">
<input type=\"hidden\" name=\"rsv.payReal\" value=\"7020\">
<input type=\"hidden\" name=\"rsv.csBulkSettleFlg\" value=\"0\">
<input type=\"hidden\" name=\"rsv.canType\" value=\"0\">
<input type=\"hidden\" name=\"rsv.serviceDv\" value=\"00\">
<input type=\"hidden\" name=\"rsv.stayTime\" value=\"\">"""
matches = re.findall(r'\bname="(.*?)" value="(.*?)"', inp)
names = [i[0] for i in matches]
values = [i[1] for i in matches]
print(names)
print(values)
['rsv.usePoint', 'rsv.yadRequestFlg', 'rsv.ybnNo', 'rsv.cardSettleFlg', 'rsv.cancelFee',
'rsv.checkoutTime', 'rsv.realUsePoint', 'rsv.payReal', 'rsv.csBulkSettleFlg',
'rsv.canType', 'rsv.serviceDv', 'rsv.stayTime']
['0', '0', '100-0000', '0', '0', '10:00', '0', '7020', '0', '0', '00', '']