2016-11-29 96 views
0

我试图删除这两个分隔符之间的文本:'<'&'>'。我正在阅读电子邮件内容,然后将该内容写入.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  
+0

您可以为您的示例发布您的预期输出吗? –

+0

同上@ Farhan.K,但增加了一些输入/预期/有doohickeys(技术术语) – Blacksilver

+0

名\t \t奥斯汀\t \t 姓\t \t琼斯 –

回答

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

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

可以使用BeautifulSoup

0

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

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

即使建议“不使用自定义解析器来解析HTML”始终是有效的。

0

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

for line in contents: 

    line = line.strip() 

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

它看起来像你正试图从文本中删除所有的HTML标签。你可以手动,但标签可能很复杂,甚至可以使用多行。

我的建议是使用BeautifulSoup是专门写来处理XML和HTML:

import bs4 

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

BS4模块已经广泛的测试,科佩斯与许多其他的情况,高度降低自己的代码...

+0

我会尝试了这一点。感谢您的输入。 –

相关问题