如何合并输出列表为单一列表并去除空元素?
解决方法
你现在的问题是没把目标字符串收集到同一个列表里,而是逐个打印单个字符串,导致输出不是统一的列表格式。按下面的代码修改就能得到你想要的结果:
# 初始化空列表存储结果 result = [] # 遍历清理后的字符串,逐个添加到列表中 for i in soup.find(class_="body").stripped_strings: result.append(i) # 打印最终的单一列表 print(result)
也可以用更简洁的列表推导式写法:
result = [i for i in soup.find(class_="body").stripped_strings] print(result)
为什么之前的方法无效?
- 你原来的循环是逐个打印每个字符串的
repr形式,输出的是多个独立的带引号字符串,而非完整的列表结构。 - 使用
zip函数时,若错误传入单个字符串,它会把字符串拆成单个字符打包,自然得到仅含单个字母的元素——zip是用来合并多个可迭代对象的,这里完全用错了场景。
另外,stripped_strings本身会自动过滤空字符串或全空白的字符串,所以最终列表里不会出现空元素,正好匹配你的期望输出。
内容的提问来源于stack exchange,提问作者Jan Alar Alesmaa
相关产品推荐
相关产品推荐

