![](/img/trans.png)
[英]How do I extract numbers from a string in JavaScript without using regular expressions?
[英]How do I Extract a Javascript Value using Regular Expressions?
我正在尝试从 Javascript 的以下位中提取ProductValue
:
<script language="javascript" type="text/javascript">
lpAddVars('page','Section','womens');
lpAddVars('page','CartTotal','0.00');
lpAddVars('page','ProductID','43577');
lpAddVars('page','ProductValue','128.00');
</script>
我不认为 Beautiful Soup 解析 javascript 所以我认为最好的方法可能是使用正则表达式,但我对 re 很陌生,到目前为止我尝试过的任何东西似乎都不起作用。 关于如何做到这一点的任何建议或帮助?
谢谢!
这应该有效:
import re
javascript_text = '''
<script language="javascript" type="text/javascript">
lpAddVars('page','Section','womens');
lpAddVars('page','CartTotal','0.00');
lpAddVars('page','ProductID','43577');
lpAddVars('page','ProductValue','128.00');
</script>
'''
product_value = re.findall(r"ProductValue.*,['|\"](.*)['|\"]", javascript_text)
# at this point, product_value = ['128.00']
那么 "ProductValue.*,'|\"['|\"]" 到底在做什么呢?
"ProductValue.*,'|\"['|\"]"
ProductValue -- 只是您要搜索的文字字符串
.* -- 我们想要任意数量的字符,所以空格、单引号等等
, -- 一旦我们到达“,”,我们将停止允许“。*”匹配所有字符
['|\"] -- 我们要匹配单引号或双引号
(.*) -- 这是我们真正感兴趣的位,可以是任何字符
['|\"] -- 同样,一旦我们到达结束单引号或双引号,我们将停止 ".*"
从这一点开始,我会做类似的事情:
product_values = []
for value in product_value:
value = value.strip() # get rid of any excess whitespace
value = float(value) # ProductValue appears to be a float of some sort
product_values.append(value) # store the value
/'ProductValue'\s*,\s*(.*?)\s\)/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.