【发布时间】:2021-05-15 01:02:06
【问题描述】:
我有这个列表
[<th align="left">
<a href="blablabla">F</a>ojweousa</th>,
<th align="left">
<a href="blablabla">S</a>awdefrgt</th>, ...]
并且想要
-
">之后的单个字符 -
</a>和</th>,之间的多个字符
被连接起来,这样我就可以继续我的生活了。
这是我的代码
item2 = []
for element in items2:
first_letter = re.search('">.</a', str(items2))
second_letter = re.search(r'</a>[a-zA-Z0-9]</th>,', str(items2))
item2.append([str(first_letter) + str(second_letter)])
我知道我应该执行item2.group 或item2.join 之类的操作,但如果我这样做,输出 会变得更加混乱。这是当前代码的输出
[['<re.Match object; span=(155, 161), match=\'">F</a\'>None'],
['<re.Match object; span=(155, 161), match=\'">F</a\'>None'],
...]]
我希望喜欢输出看起来像这样,以便我可以在 pd.dataframe 中使用它:
[Fojweousa, Sawdefrgt, ...]
这是一个列表,这就是为什么我不能使用 html bs4 或选择方法。
【问题讨论】:
-
“这是一个列表,这就是为什么我不能使用 html bs4 或选择方法。” - 这个列表是从哪里来的?是用 bs4 创建的吗?
-
试试
item2 = [re.sub(r'<[^>]*>', '', x).strip() for x in items2]。但是使用 BeautifulSoup 将是最好的解决方案,您可以在其中去除标签like this。 -
@Tomalak 是的。 @Wiktor TypeError:预期的字符串或类似字节的对象。这是 bs4 调用:
items2 = table.find_all('th', attrs={'align': 'left'})[1:]我无法组合两个 bs4 方法,例如get_text()和find_all()每次我做一个find_all()时,我都会得到列表,然后需要依赖正则表达式。这很烦人 -
像
result = [x.get_text() for x in table.find_all('th', attrs={'align': 'left'})[1:]]那样做 -
@id345678 如果你已经使用 bs4 创建了这个列表,你可以使用 bs4 来提取你想要的文本。您永远都不想使用正则表达式来解析 HTML。
标签: python html for-loop beautifulsoup