除了一些 Ruby,我的编码背景非常有限,所以如果有更好的方法,请告诉我!
本质上,我有一个充满单词的 .txt 文件。我想导入 .txt 文件并将其转换为列表。然后,我想获取列表中的第一项,将其分配给一个变量,并在发送的外部请求中使用该变量以获取单词的定义。定义被返回,并被放入不同的 .txt 文件中。完成后,我希望代码获取列表中的下一项并再次执行所有操作,直到列表用尽。
下面是我正在进行的代码,以了解我在哪里。我仍在试图弄清楚如何正确地遍历列表,而且我很难解释文档。
如果已经问过这个问题,请提前道歉!我进行了搜索,但找不到任何专门回答我的问题的内容。
from __future__ import print_function
import requests
import urllib
from bs4 import BeautifulSoup
def get_definition(x):
url = 'http://services.aonaware.com/DictService/Default.aspx?action=define&dict=wn&query={0}'.format(x)
html = urllib.urlopen(url).read()
soup = BeautifulSoup(html, "lxml")
return soup.find('pre', text=True)[0]
lines = []
with open('vocab.txt') as f:
lines = f.readlines()
lines = [line.strip() for line in lines]
definitions = []
for line in lines:
definitions.append(get_definition(line))
out_str = '\n'.join(definitions)
with open('definitions.txt', 'w') as f:
f.write(out_str)
我遇到的问题是
Traceback (most recent call last):
File "WIP.py", line 20, in <module>
definitions.append(get_definition(line))
File "WIP.py", line 11, in get_definition
return soup.find('pre', text=True)[0]
File "/Library/Python/2.7/site-packages/bs4/element.py", line 958, in __getitem__
return self.attrs[key]
KeyError: 0
我知道这soup.find('pre', text=True)
是回归None
,但不知道为什么或如何解决它。