如何剥离两个分隔符之间的文本,包括空行? [复制]

Posted

技术标签:

【中文标题】如何剥离两个分隔符之间的文本,包括空行? [复制]【英文标题】:How does one strip text between two delimiters including empty lines? [duplicate] 【发布时间】:2017-04-13 15:26:51 【问题描述】:

我正在尝试删除这两个分隔符之间的文本:''。我正在阅读电子邮件内容,然后将该内容写入 .txt 文件。这两个分隔符之间有很多垃圾,包括 .txt 文件中的行之间的空格。我该如何摆脱这个?以下是我的脚本从写入 .txt 文件的数据中读取的内容:

 First Name</td>

                <td bgcolor='white' style='padding:5px

 !important;'>Austin</td>

                </tr><tr>

                <td bgcolor='#f9f9f9' style='padding:5px !important;'

 valign='top' width=170>Last Name</td>

以下是我当前用于从 .txt 文件中读取空行的代码:

    # Get file contents
    fd = open('emailtext.txt','r')
    contents = fd.readlines()
    fd.close()

    new_contents = []

    # Get rid of empty lines
    for line in contents:
        # Strip whitespace, should leave nothing if empty line was just       "\n"
        if not line.strip():
            continue
        # We got something, save it
        else:
            new_contents.append(line)

    for element in new_contents:
        print element

这是预期的:

 First Name     Austin      


 Last Name      Jones       

【问题讨论】:

您能否发布您的示例的预期输出? 同上 @Farhan.K ,但添加一些输入/预期/得到 doohickeys(技术术语) 名字奥斯汀姓氏琼斯 【参考方案1】:
markup = '<td bgcolor='#f9f9f9' style='padding:5px !important;'

 valign='top' width=170>Last Name</td>'
soup = BeautifulSoup(markup)
soup.get_text()

你可以使用BeautifulSoup

【讨论】:

【参考方案2】:

您应该考虑使用正则表达式和re.sub 函数:

import re
print re.sub(r'<.*?>', '', text, re.DOTALL)

即使建议“不要使用自定义解析器解析 html 总是有效的。

【讨论】:

【参考方案3】:

您需要将 line.strip() 的结果分配给一个变量并将其添加到您的其他内容中。否则,您将只保存未剥离的行。

for line in contents:

    line = line.strip()

    if not line:
        continue
    # We got something, save it
    else:
        new_contents.append(line)

【讨论】:

【参考方案4】:

您似乎正试图从文本中删除所有 HTML 标记。您可以手动完成,但标签可能很复杂,甚至可以使用多行。

我的建议是使用专门为处理 xml 和 html 而编写的 BeautifulSoup:

import bs4

# extract content... then
new_content = bs4.BeautifoulSoup(content, 'html.parser').text
print new_content

bs4 模块已经过广泛的测试,可以应对许多极端情况并大大减少您自己的代码...

【讨论】:

我会试试这个。感谢您的意见。

以上是关于如何剥离两个分隔符之间的文本,包括空行? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

ueditor复制文本有多余的空行问题

如何使 Logback 记录一个空行,而不包括模式字符串?

如何提取两个点之间的文本

Django TextField 和 CharField 正在剥离空格和空行

如何制作分隔线? [复制]

如何在两个表之间显示空行