您可以使用一些简单的列表乘法:# use a constant at the top of your script in case the number of columns
# change in the future
COLUMNS = 3
# ... other code ...
all = [s.text for s in soup.find_all('a')]
all.extend(['']*(COLUMNS-len(all))) # append 1 empty string for each missing text field
var1, var2, var3 = all
但正如大卫·泽门斯在评论中提到的,必须有更好的方法来做到这一点。如果没有看到消耗文本变量的代码,我不能提出任何具体的建议,但是您应该认真地重新考虑您的设计。即使像我建议的那样使用常量,var1, var2, var3 = all仍然会使将来维护和修改此脚本变得困难。在
根据你的编辑,我建议你改用词典。这将允许您按名称引用特定数据,就像引用变量一样,但保留了列表的灵活性,而不是限制您使用硬编码的变量数量。在
例如:
^{pr2}$
如果all是['a', 'b'],则此代码将生成:{'var1': 'b', 'var0': 'a'}
变量赋值实际上只不过是一个映射——你的代码知道变量名,它可以查找相应的值。字典可以让你的代码动态地构建映射,而不必硬编码。现在我们已经构建了一个字典,其中varX变量是动态构造的。如果您决定添加另一列,您根本不必更改此代码。您只需添加使用var4的代码,并准备好在字典中不存在var4时捕捉异常。不再添加空字符串-您的代码已经准备好处理它要查找的数据不存在的情况。在
注意事项:enumerate()函数迭代iterable对象并为您增加一个计数器。在我的代码中,i是计数器(因此我们可以构造'var1'、'var2'。。。字符串),并且field是列表中的每一项。在