Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用变量名(Regex)提取变量值_Python_Regex_Beautifulsoup - Fatal编程技术网

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]