我对Python很陌生,对lxml来说更新,但我想做的事情似乎很简单,但我无法弄清楚我做错了什么。
我有这个代码的目的是将一个值列表(列表对象ISBN)提供给lxml以提交到搜索字段:
for i in ISBN:
page.forms[0].fields['_nkw'] = ISBN[i]
blah blah blah
运行后出现此错误:
Traceback (most recent call last):
page.forms[0].fields['_nkw'] = ISBN[i]
TypeError: list indices must be integers, not str
显然必须有一种方法可以迭代一个值列表来提供给表单,但显然我不知道它:)
编辑:仅当用硬输入替换ISBN [i]时,代码工作正常。 编辑2:请求的ISBN列表对象的内容:
['9781608319053', '9780321558237', '9781932735413', '9781416059516', '9781437708257', '9780781780582', '9781437701517', '9780323065801', '9780890420256', '9780323079334', '9781599417042', '9780781771535', '9781416031215', '9780312601430', '9780781775250', '9781591263333', '9780071748896', '9780133669510', '9781416045748', '9780781771566', '9781437728019', '9780323065849', '9781416066675', '9780735579965', '9780323078917', '9781437735826', '9781603595681', '9780321696724', '9780321558145', '9781933107981', '9780138024611']
答案 0 :(得分:1)
麻烦在于你的循环并使用ISBN变量。在分配期间,您不需要对其进行索引,因为i
已经包含列表的元素,作为循环的一部分提取。您收到异常是因为您无法使用字符串索引列表,即使该字符串来自列表本身。
相反,请使用page.forms[0].fields['_nkw'] = i
。
或者,如果您需要将ISBN编入索引以供以后未显示的代码使用,请保持分配不变,并将循环声明更改为:
for i in range(len(ISBN)):