【问题标题】:regex for loop over list in python正则表达式for循环在python中的列表
【发布时间】: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>, ...]

并且想要

  1. "&gt; 之后的单个字符

  2. &lt;/a&gt;&lt;/th&gt;, 之间的多个字符

被连接起来,这样我就可以继续我的生活了。

这是我的代码

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.groupitem2.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'&lt;[^&gt;]*&gt;', '', 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


【解决方案1】:

您可以使用 BeautifulSoup get_text() 从您找到的每个元素中获取纯文本 find_all strip 以消除前导和尾随空格:

items2 = table.find_all('th', attrs={'align': 'left'})[1:]
result = [x.get_text().strip() for x in items2]

在这里,.find_all('th', attrs={'align': 'left'}) 查找所有 th 元素的属性 align 等于 left[1:] 跳过第一次出现。

接下来,[x.get_text().strip() for x in items2] 是一个列表解析,它遍历找到的项目(items2x 是每个找到的元素)并使用 x.get_text()strip() 从每个 x 元素中获取纯文本删除前导/尾随空格。

【讨论】:

    猜你喜欢
    • 2012-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-23
    • 2016-03-20
    • 1970-01-01
    • 2020-06-20
    • 1970-01-01
    相关资源
    最近更新 更多