需要将2000个变量组合到一个列表中,以便在forloop中使用

2024-09-27 23:19:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用for循环在selenium中循环2000次迭代。我已经创建了我的排列,并为每个排列创建了单独的变量(使用excel合并它们)。你知道吗

我的变量从A1…A2000列出来。我需要把它放到一个列表中,这样我就可以在for循环中使用我的代码。我知道的唯一方法是用逗号分隔(例如:A1,A2,A3…),但这对于2000个变量来说是不现实的。你知道吗

有什么建议吗?你知道吗

变量按如下顺序列出:

    A1 = ('xpath text')
    A2 = ('xpath text')
    A2000 = ('xpath text')

我正在使用selenium在下拉列表中进行web爬网

    for i in range(1, 2000):
      xpathlist = [A&i]
      for xp in xpathlist:
        b.find_element_by_xpath(xp)
        click = download.click()

Tags: 方法代码textina2列表fora1
2条回答

假设模块foo.py中有所有这些变量:

import foo
all_vars = (getattr(foo, f'A{i}') for i in range(1, 2000))

这样做的好处是不创建列表,而是在迭代时检索每个值。有关生成器here的详细信息

注意:我使用了格式化字符串(f''),它需要python3.6+,对于旧版本,使用'A{}'.format(i)'A%d' % i。你知道吗

…使用excel合并它们。。。

我可能读得有点太多了,但您可以通过以下方式绕过Excel:

from itertools import product

NAMES= ('x', 'y', 'z')
VALUES = ('foo', 'bar')

nvs = [f'{n} {v}' for n, v in product(NAMES, VALUES)]
print(nvs)

['x foo',
 'x bar',
 'y foo',
 'y bar',
 'z foo',
 'z bar']

或者对于排列(如您所述):

from itertools import permutations

VALUES = ('foo', 'bar', 'baz', 'qux')

perms = [f'{a}/{b}/{c}' for a, b, c in permutations(VALUES, 3)]
print(perms)
['foo/bar/baz', 'foo/bar/qux', 'foo/baz/bar', 'foo/baz/qux',
 'foo/qux/bar', 'foo/qux/baz', 'bar/foo/baz', 'bar/foo/qux',
 'bar/baz/foo', 'bar/baz/qux', 'bar/qux/foo', 'bar/qux/baz',
 'baz/foo/bar', 'baz/foo/qux', 'baz/bar/foo', 'baz/bar/qux',
 'baz/qux/foo', 'baz/qux/bar', 'qux/foo/bar', 'qux/foo/baz',
 'qux/bar/foo', 'qux/bar/baz', 'qux/baz/foo', 'qux/baz/bar']

然后您就可以迭代列表nvsperms

相关问题 更多 >

    热门问题