BeautifulSoup 或 Pandas 向具有多行值的单元格添加换行符或段落标记

BeautifulSoup or Pandas add line break or paragrah tag to cell with multiline value

我正在使用(被低估的)xlsx2html 将 Excel 文件转换为 HTML 文件,然后我可以使用 Beautiful Soup 为其他进程操作这些文件。我 运行 遇到的一个问题是 xlsx2html 不会向具有多行的单元格添加换行符,如下图所示。

这会产生如下所示的输出,其中所有行都在一行上:

我需要一个输出,其中每一行都在自己的行上:

我知道我需要在多行单元格中添加换行符,但我不知道如何以编程方式执行此操作。我的思考过程是搜索每个标签并计算它包含的代码行数。如果超过 1 行代码,请添加一个换行符(或者最好是一个段落标记)。但是,我不知道如何计算行数。

我希望我有代码来分享我尝试做的事情,但我完全是一片空白。有任何想法吗?谢谢!

这对我有用,只需将 <br> 添加到字符串中不以 >\n 结尾但仍以 \n 结尾的位置。我很讨厌正则表达式,所以我只是以一种 hacky 的方式使用 replace

输入:

代码:

from xlsx2html import xlsx2html
import random

in_file = xlsx2html("/path/to/your/Untitled spreadsheet.xlsx")
with open("/path/to/output_html.html", "w") as f:
    in_file.seek(0)
    v = in_file.read()
    # I suck at regex, but you can do re.sub("pattern", "<br>", v)
    # Where "pattern" selects lines that don't end with ">\n"
    hsh = str(random.getrandbits(128))
    v = v.replace(">\n", hsh)
    v = v.replace("\n", "<br>")
    v = v.replace(hsh, ">\n")
    print(v)
    f.write(v)

输出: