Python 我怎样才能转身<;br>;及<;p>;换行?

Python 我怎样才能转身<;br>;及<;p>;换行?,python,html,xml,regex,Python,Html,Xml,Regex,假设我有一个HTML,里面有和标记。之后,我将剥离HTML以清理标记。我怎样才能把它们变成换行符 如果有帮助的话,我正在使用Python的库。我不完全确定您想要完成什么,但是如果您只是尝试删除HTML元素,我只会使用类似的程序并使用Replace all函数-我认为您也可以使用Replace all插入新行。如果您更换了元素,请确保您也删除了关闭()。此外,仅供参考,正确的HTML5是而不是,但这并不重要。Python不是我的第一选择,所以它有点超出我的知识范围,很抱歉,我无法提供更多帮助。如果

假设我有一个HTML,里面有

标记。之后,我将剥离HTML以清理标记。我怎样才能把它们变成换行符


如果有帮助的话,我正在使用Python的库。

我不完全确定您想要完成什么,但是如果您只是尝试删除HTML元素,我只会使用类似的程序并使用Replace all函数-我认为您也可以使用Replace all插入新行。如果您更换了
元素,请确保您也删除了关闭(

)。此外,仅供参考,正确的HTML5是

而不是

,但这并不重要。Python不是我的第一选择,所以它有点超出我的知识范围,很抱歉,我无法提供更多帮助。

如果没有一些细节,很难确定它是否完全符合您的要求,但这应该会给您一个想法。。。它假定您的b标记被包装在p元素中

从美化组导入美化组
导入类型
def将_替换为_新行(元素):
文本=“”
对于元素中的元素。recursiveChildGenerator():
如果isinstance(元素、类型、字符串类型):
text+=元素带()
elif elem.name==“br”:
text+='\n'
返回文本
第“”页
美国,
现在是所有好人来帮助他们国家的时候了

累积纳税人债务

现在是所有好人来帮助他们国家的时候了

""" 汤=美汤(第页) lines=soup.find(“body”) 对于line-in-line.findAll('p'): 行=用新行替换新行(行) 打印行
运行此命令将导致

(py26_default)[mpenning@Bucksnort ~]$ python thing.py
America,
Now is the
time for all good men to come to the aid
of their country.
pile on taxpayer debt

Now is the
time for all good men to come to the aid
of their country.
(py26_default)[mpenning@Bucksnort ~]$

这是@Mike Pennington答案的python3版本(它真的很有帮助),我做了一些重构

def replace_with_newlines(element):
    text = ''
    for elem in element.recursiveChildGenerator():
        if isinstance(elem, str):
            text += elem.strip()
        elif elem.name == 'br':
            text += '\n'
    return text


def get_plain_text(soup):
    plain_text = ''
    lines = soup.find("body")
    for line in lines.findAll('p'):
        line = replace_with_newlines(line)
        plain_text+=line
    return plain_text
要使用此方法,只需传递Beautifulsoup对象以获取纯文本方法

soup = BeautifulSoup(page)
plain_text = get_plain_text(soup)

get_text
似乎可以满足您的需要

>>> from bs4 import BeautifulSoup
>>> doc = "<p>This is a paragraph.</p><p>This is another paragraph.</p>"
>>> soup = BeautifulSoup(doc)
>>> soup.get_text(separator="\n")
u'This is a paragraph.\nThis is another paragraph.'
>>来自bs4导入组
>>>doc=“这是一段。

这是另一段。

” >>>汤=美汤(doc) >>>soup.get_文本(分隔符=“\n”) 这是一段。\n这是另一段
对于如何操作有何偏好?我本来想建议使用
re.sub(r“
”,“\n”,myString)
,但是结束标记呢?

。您是否只希望在结束标记后有一个换行符?我会跳过Beautiful Soup,直接通过XSLT将其插入。不是这样:get_text(separator='\n')在所有标记后插入
分隔符。例如,“这是一些没有换行符的文本”变成“这是一些没有换行符的文本”。是的,很奇怪。。。