Python 3.x 我们应该如何处理这个错误;列表索引必须是整数,而不是unicode“;

Python 3.x 我们应该如何处理这个错误;列表索引必须是整数,而不是unicode“;,python-3.x,web-scraping,Python 3.x,Web Scraping,我正在尝试删除所有新行、选项卡,并仅打印名为tables的列表变量中的文本 这些表格是通过浏览世卫组织网站获得的 [43]中的tables[0]=tables[0].text.strip().replace('\n','').replace('\t','') In[44]:表[0] Out[44]:u'A阿富汗阿尔巴尼亚阿尔及利亚安道尔安哥拉安提瓜和巴布达阿根廷亚美尼亚澳大利亚奥地利阿塞拜疆' 在我尝试遍历这些表之前,一切都很好,但后来发生了以下情况 [45]中的:对于表中的i: …:tabl

我正在尝试删除所有新行、选项卡,并仅打印名为
tables的列表变量中的文本
这些表格是通过浏览世卫组织网站获得的

[43]中的
tables[0]=tables[0].text.strip().replace('\n','').replace('\t','')
In[44]:表[0]
Out[44]:u'A阿富汗阿尔巴尼亚阿尔及利亚安道尔安哥拉安提瓜和巴布达阿根廷亚美尼亚澳大利亚奥地利阿塞拜疆'
在我尝试遍历这些表之前,一切都很好,但后来发生了以下情况

[45]中的
:对于表中的i:
…:tables[i]=tables[i].text.strip().replace('\n','').replace('\t','')
…:打印(表[i])
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
在()
表中i的1:
---->2表[i]=表[i].text.strip().replace('\n','').replace('\t','')
3打印(表[i])
TypeError:列表索引必须是整数,而不是unicode
这是我另一次失败的尝试

[47]中的
:对于范围内的i(len(表)):
…:tables[i]=tables[i].text.strip().replace('\n','').replace('\t','')
…:打印(表[i])
...:     
---------------------------------------------------------------------------
AttributeError回溯(最近一次呼叫上次)
在()
1表示范围内的i(len(表)):
---->2表[i]=表[i].text.strip().replace('\n','').replace('\t','')
3打印(表[i])
AttributeError:“unicode”对象没有属性“text”
我曾经是一个美丽的苏族noob,我请求你们的帮助

这是我的解决方案

[1]中的
:从bs4导入BeautifulSoup
在[2]中:导入请求
在[3]中:url=https://www.who.int/countries/en/'                                                                           
在[4]中:content=requests.get(url.content)
[5]中:soup=BeautifulSoup(内容为“html5lib”)
在[6]中:divs=soup.findAll('div',attrs={'class':'largebox'})
在[7]:国家=[]
In[8]:对于div中的div:
…:li=div.findAll('li'))
…:对于li中的l:
…:打印(洛杉矶文本)
这有一个严格的解决方案,但有效。我已经确定,每个字母表都有一个
div
,带有
class=largebox
,每个国家都是一个
html
li
项目,包裹在锚(
a
)标记中。因此,遍历所有div和列表项得到了以下结果

阿富汗 阿尔巴尼亚 阿尔及利亚 安道尔 安哥拉 安提瓜和巴布达 阿根廷 亚美尼亚 澳大利亚 奥地利 阿塞拜疆 巴哈马 巴林 孟加拉国 巴巴多斯 白俄罗斯 比利时 伯利兹 贝宁 不丹 多民族玻利维亚国 波斯尼亚和黑塞哥维那 博茨瓦纳 巴西 文莱达鲁萨兰国 保加利亚 布基纳法索 布隆迪 佛得角 柬埔寨 喀麦隆 加拿大 中非共和国 查德 智利 中国 哥伦比亚 科摩罗 刚果 库克群岛 哥斯达黎加 科特迪瓦 克罗地亚 古巴 塞浦路斯 捷克 朝鲜民主主义人民共和国 刚果民主共和国 丹麦 吉布提 多米尼加 多米尼加共和国 厄瓜多尔 埃及 萨尔瓦多 赤道几内亚 厄立特里亚 爱沙尼亚 斯威士兰 埃塞俄比亚 斐济 芬兰 法国 加蓬 冈比亚 佐治亚州 德国 加纳 希腊 格林纳达 危地马拉 几尼 几内亚比绍 圭亚那 海地 洪都拉斯 匈牙利 冰岛 印度 印度尼西亚 伊朗伊斯兰共和国 伊拉克 爱尔兰 以色列 意大利 牙买加 日本 乔丹 哈萨克斯坦 肯尼亚 基里巴斯 科威特 吉尔吉斯斯坦 老挝人民民主共和国 拉脱维亚 黎巴嫩 莱索托 利比里亚 利比亚 立陶宛 卢森堡 马达加斯加 马拉维 马来西亚 马尔代夫 马里 马耳他 马绍尔群岛 毛里塔尼亚 毛里求斯 墨西哥 密克罗尼西亚联邦 摩纳哥 蒙古国 黑山 摩洛哥 莫桑比克 缅甸 纳米比亚 瑙鲁 尼泊尔 荷兰 新西兰 尼加拉瓜 尼日尔 尼日利亚 纽埃 北马其顿 挪威 阿曼 巴基斯坦 帕劳 巴拿马 巴布亚新几内亚 巴拉圭 秘鲁 菲律宾 波兰 葡萄牙 卡塔尔 大韩民国 摩尔多瓦共和国 罗马尼亚 俄罗斯联邦 卢旺达 圣基茨和尼维斯 圣卢西亚 圣文森特和格林纳丁斯 萨摩亚 圣马力诺 圣多美和普林西比 沙特阿拉伯 塞内加尔 塞尔维亚 塞舌尔 塞拉利昂 新加坡 斯洛伐克 斯洛文尼亚 所罗门群岛 索马里 南非 南苏丹 西班牙 斯里兰卡 苏丹 苏里南 瑞典 瑞士 阿拉伯叙利亚共和国 塔吉克斯坦 泰国 东帝汶 多哥 汤加 特立尼达和多巴哥 突尼斯 土耳其 土库曼斯坦 图瓦卢 乌干达 乌克兰 阿拉伯联合酋长国 大不列颠联合王国 坦桑尼亚联合共和国 美利坚合众国 乌拉圭 乌兹别克斯坦 瓦努阿图 委内瑞拉玻利瓦尔共和国 越南 也门 赞比亚 津巴布韦
更新
找到更好的版本

显示的最后一个代码块应该可以工作。您得到的错误表明您的
对象(我猜它是一个列表?)包含不一致类型的数据。有些条目可能是具有
text
属性的对象,但至少有一个是Unicode字符串。这可能是因为您使用第一个代码块中的代码手动修改了
表[0]
?如果是这种情况,重建数据(例如,通过重新刮取或重新处理来自某个早期中间结果的数据)应该可以修复错误。或者如果只有索引
0<
for i, value in enumerate(tables):
    tables[i] = some_processing(value) # details of the processing omitted for brevity
processed_tables = [process(value) for value in tables]
for value in tables:
    processed_value = process(value)
    print(processed_value)