【发布时间】:2021-12-19 14:34:04
【问题描述】:
所以我使用beautifulsoup 来抓取维基百科页面中的表格,在该页面中我提取文件中的数据。 问题是我想删除为表中的列生成的列表中的一些子字符串
这是我的代码:
soup= bs(result.text,'html.parser')
country_names= soup.find('table', class_= 'wikitable sortable').tbody
rows= country_names.find_all('tr')
columns=[v.text.replace('[a][b][13]\n', '') for v in rows[0].find_all('th')]
print(columns)
我所能做的就是使用替换函数从列表中的字符串中只删除一个子字符串。
replace()函数之前的输出:
['Flag\n', 'Map\n', 'English short nameandformal name[6][7][8]\n', 'Local short name(s)andformal name(s)[6][7]\n', 'Capital[8][9][10]\n', 'Population (2018)[11][12]\n', 'Area[a][b][13]\n']
replace()函数后的输出:
['Flag\n', 'Map\n', 'English short nameandformal name[6][7][8]\n', 'Local short name(s)andformal name(s)[6][7]\n', 'Capital[8][9][10]\n', 'Population (2018)[11][12]\n', 'Area']
所以我想删除所有子字符串,例如 '[8][9][10]\n'、' [6][7]\n '、'[6][7][8]\n' 和 '(2018)[11][12]\n' 等等,但我无法找到解决方案,因为我对 python 和 beautifulsoup 还很陌生。
【问题讨论】:
-
这个问题与美丽的汤或网络爬行没有任何关系:)。我认为您可以删除问题的那部分(和标签)。
-
问题实际上不是“如何在 python 中替换字符串列表中的子字符串?”,因为您已经展示了可以做到这一点的代码:您有一个字符串列表,并且您成功替换包含它的每个字符串中的子字符串
[a][b][13]。 问题是如何替换任何匹配模式的子字符串;显然,一旦你有了那个工具,你就已经知道如何将它应用到列表中了。 (您显然也知道如何使用 BeautifulSoup 和列表推导式。)问您真正需要帮助的问题会很有帮助。 -
创建关注该问题的示例也很有帮助。请阅读stackoverflow.com/help/minimal-reproducible-example。
标签: python beautifulsoup web-crawler