如何在 Python 中用逗号(对于 CSV)替换 HTML 标签?

How do you replace HTML tags with commas (for CSV) in Python?

我有一个非常长的 HTML 文件,我无法修改但想解析 CSV 输出。想象一下以下代码在同一行中重复了数百次。我意识到如果有换行符,这会简单得多,但我无法控制文件的创建方式。您还应该知道这段代码中没有友好的换行符;想象一下完全缩小的代码。我刚刚添加了休息时间,因此更容易形象化。但是,任何实际的解决方案都不能依赖换行符或空格,因为它们在现实中不存在。

<tr id="link">
<td><a href="https://www.somewebsite.com" target="_target">Title</a></td>
<td>Value 1</td><td style="width:20ch">Value 2</td>
<td></td><td></td><td>Value 3</td>
<td>Value 4</td><td>Value 5</td><td>Value 6</td>
<td>Value 7</td><td>Value 8</td><td>Value 9</td></tr>

我想要的输出是 https://www.somewebsite.com, Title, Value 1, Value 2, , , Value 3, ...(等等)

基本上,我想用逗号替换标签中的所有值,但保留 URL。我在 Python 中找不到任何方法来解析这样的东西,因为 Python 中的 scan()、find() 等函数似乎没有像我一样在全局范围内跟踪文件指针习惯于使用像 C 这样的语言。所以,无论我做什么,我都会不断地查看行的开头。

from bs4 import BeautifulSoup

html_doc = """
<tr id="link">
<td><a href="https://www.somewebsite.com" target="_target">Title</a></td>
<td>Value 1</td><td style="width:20ch">Value 2</td>
<td></td><td></td><td>Value 3</td>
<td>Value 4</td><td>Value 5</td><td>Value 6</td>
<td>Value 7</td><td>Value 8</td><td>Value 9</td></tr>"""

for tr in BeautifulSoup(html_doc, 'html.parser').find_all('tr'):
    row = []
    for td in tr.find_all('td'):
        anchor = td.find('a')
        row.extend([anchor['href'], anchor.text] if anchor else [td.text])
    print(', '.join(row))