无法循环访问某些数字,即使它们看起来像列表



我试图从一个脚本标签内可用的网页解析零件号列表。我已经挖出了相关的部分来创建这个演示,因为网站需要身份验证。

当我尝试下面的正则表达式时,我可以获取数字,但问题是我不能在打印时迭代数字,即使数字似乎在列表中。

我试过了:

import re
elems = """
<script type="text/javascript">
$SPC.PartNos = [1922624,1922625,1922626,1922627,1922628,1922629,1922630];
$SPC.QuantityUnits = ['PC','PC','PC','PC','PC','PC','PC'];
</script>
"""
items = re.findall(r"SPC.PartNos[^[]+(.*?);",elems)[0]
# print(items)
for item in items:
print(item)

当前输出(截断):

[
1
9
2
2
6
2
4
,
1
9
2

预期输出:

1922624
1922625
1922626
1922627
1922628
1922629
1922630

模式的这一部分[^[]+将匹配除[以外的任何字符,然后(.*?)将包含括号。

然后循环第1组返回的字符串,它将为您提供单个字符,包括[]

您可以不使用括号获取第1组的值,然后在分隔时使用逗号进行循环。

import re
pattern = r"SPC.PartNos = [([^][]*)]"
elems = """
<script type="text/javascript">
$SPC.PartNos = [1922624,1922625,1922626,1922627,1922628,1922629,1922630];
$SPC.QuantityUnits = ['PC','PC','PC','PC','PC','PC','PC'];
</script>
"""
m = re.search(pattern, elems)
if m:
for item in m.group(1).split(','):
print(item)

输出
1922624
1922625
1922626
1922627
1922628
1922629
1922630

相关内容

最新更新