【问题标题】:Delete repeated words in a row Python删除一行重复的单词 Python
【发布时间】:2018-11-20 06:17:53
【问题描述】:

原来我用的是beautifulsoup,在表格中过滤时,得到的数据如下:

["<td>9111/2018 2222/18</td>", '<td style="font-size: small;">AINDUSTRIAL </td>', 
 "<td>18-05-2018</td>", "<td>Juz. 5 Posá<td>POSA</td></td>", 
 "<td>POSA</td>"]

我只需要提取表示"Juz 5. Posá""&lt;td&gt;"(尽管对于我正在做的事情,名称会有所不同),但我只需要该列。我留下代码,因为我设法使输出是:

Juz. 5 PosáPOSA

我只需要 Juz。 5 Posá,但不幸的是我击中了另一个词。然后是代码,当然,非常感谢!

soup = BeautifulSoup(html.text,from_encoding="utf-8")

table = soup.findChildren('table')[0]
for row in table.find_all("tr")[1:]:
    col = row.find_all("td")
    print(col[3].text.replace('\n',''))
    if not cells:
        continue

【问题讨论】:

  • 不是真正的问题continue 什么都不做,而是跳到下一个迭代而不执行它后面的语句。如果条件满足,您似乎没有任何语句可以跳过。
  • 但是,为什么 beautifulsoup 过滤了我 Juz。 5 Post POSA 如果事实上,在表格中,它们是分开的: juz。 5 波萨 波萨

标签: python beautifulsoup screen-scraping


【解决方案1】:

不确定这是否是您要找的,但这里有两个解决方案。

解决方案 #1

递归删除字符“、/、td”

for i in range(len(x)):
  x = x.replace("<", "")
  x = x.replace(">", "")
  x = x.replace("/", "")
  x = x.replace("td", "")
print(x)

解决方案 #2

首先选择列表项[3]

x = x[3]

从字符串中选择前 4 个字符,因为它以

开头
x = x[4:]

然后找到“

print(x[:x.index("<")])

【讨论】:

  • 您好,谢谢您的回复,但是...我已经意识到 html 是如何带来的,发生的事情是我看到的是它没有关闭 td,即它检查我放的 td,你会注意到“ Juz 5 Posá POSA ”没有关闭我需要的 td,有什么方法可以解决它?
  • 我的上帝,我写了你给我的东西,我还没有尝试过。现在我尝试了,它可以正常工作。太感谢了!说真的,我被卡住了。我真的很惊讶它只有一个.replace。再次非常感谢@MFK34
猜你喜欢
  • 2018-07-27
  • 2012-02-06
  • 1970-01-01
  • 1970-01-01
  • 2020-04-02
  • 1970-01-01
  • 2022-11-07
  • 1970-01-01
  • 2013-08-11
相关资源
最近更新 更多