Python 使用变量名(Regex)提取变量值
我有一个带有多个变量定义的标记,例如:Python 使用变量名(Regex)提取变量值,python,regex,beautifulsoup,Python,Regex,Beautifulsoup,我有一个带有多个变量定义的标记,例如: <script> var name1="value1";var name2="value2";var name3="value3"; </script> 如果知道变量名,如何获取变量值?使用正则表达式: parameter = # Requested parameter value parsed_code = # JS snippet regex_string = 'var {parameter}="(.*?)"'.fo
<script>
var name1="value1";var name2="value2";var name3="value3";
</script>
如果知道变量名,如何获取变量值?使用正则表达式:
parameter = # Requested parameter value
parsed_code = # JS snippet
regex_string = 'var {parameter}="(.*?)"'.format(parameter=parameter)
re.findall(regex_string, parsed_code)
没有regex,因为这不是一个很好的用例:
parameter = # Requested parameter value
parsed_code = # JS snippet
identifying_string = '{parameter}="'.format(parameter=parameter)
value = parsed_code.split(identifying_string)[1].split('"')[0]
两者都是相当不安全的,你应该考虑一种不同的方式来做你正在做的事情。您不必考虑注释、其他代码、其他换行符、
=
、'
周围的空格,而不必考虑“
、模板文本、数字、返回值的函数……我的观点是:对于引用的示例,使用单个正则表达式就可以实现这一点,但对于一般的JavaScript代码来说,这是不可能的。为此,您需要一个JavaScript解析器。是的,我想要提取变量值,因为它位于从BeautifulSoup返回的字符串中。因此,示例是无效的JavaScript。这是故意的吗?(在var
语句中,逗号后面不能有var
),因此这不是javascript问题,而是应该标记为python问题。如果不想使用javascript来扩展文件,请修复标记。
parameter = # Requested parameter value
parsed_code = # JS snippet
identifying_string = '{parameter}="'.format(parameter=parameter)
value = parsed_code.split(identifying_string)[1].split('"')[0]