【发布时间】:2019-05-28 15:13:21
【问题描述】:
我当前的代码使用变量“word”,所以 word = sys.argv[1] + sys.argv[2],当我有两个参数时效果很好,但是当我只有一个参数时,我得到 IndexError : 列表索引超出范围
我正在编写一个程序,它通过从字典 .com 中提取信息来定义单词。我正在密切关注视频教程,因为我只是想学习如何让基本词典工作,(长期目标是编写一个独立于谷歌翻译 api 或类似内容的翻译应用程序)。我有一个代码,它可以在您输入单词时提取定义,但在您输入 2 个单词时不会,示例如下。所以我添加了一个参数,它适用于 2 个单词,但不再适用于一个单词。
import requests
from bs4 import BeautifulSoup as bs
import sys
url = "https://www.dictionary.com/browse/"
word = sys.argv[1] + sys.argv[2]
url+= word
r = requests.get(url)
soup = bs(r.content, "lxml")
try:
pos = soup.findAll("span", {"class" : "luna-pos"})[0].text #luna-pos is an html tag
definitions = soup.findAll("ol")
meanings = definitions[0].findChildren("li", recursive=False)
print(word + ": " + pos)
for (i,meaning) in enumerate(meanings):
print(str(i + 1), meaning.text)
except:
print("Word not found")
预期结果: 打印单词、词性和定义。 即定义单词(作为单个参数)“正确” 还要定义“自我控制”(两个词参数)
【问题讨论】:
-
在尝试访问不存在的 [2] 索引之前检查您有多少个参数?基本
if条件。 -
@ParitoshSingh 并不是最好的解决方案。那么 3 个参数会发生什么? 4? 100?
-
是的,没错。
标签: python web-scraping translators