从Python列表中删除HTML标记

时间:2014-07-03 23:45:31

标签: python html parsing append

我有一个包含三个值的python列表:

address = 
[<p>
<strong>CVS Pharmacy #</strong><br/>
                        1025 St Clair River Dr <br/>
                        Algonac, MI 48001<br/>
                        1-810-794-4941
                        </p>,
<p>
<strong>Kroger Pharmacy</strong><br/>
                        2600 Pointe Tremble <br/>
                        Algonac, MI 48001<br/>
                        1-810-671-4002
                        </p>,
<p>
<strong>Rite Aid Pharmacy 04943</strong><br/>
                        402 Pointe Tremble Road <br/>
                        Algonac, MI 48001<br/>
                        1-810-794-4985
                        </p>]

我想删除HTML标记。当试图逐一这样做时:

print(address[0].text) 

我明白了:

    CVS Pharmacy #
                        1025 St Clair River Dr 
                        Algonac, MI 48001
                        1-810-794-4941

这就是我想要的。但是,当我迭代循环时,我得到:

[u'\nCVS Pharmacy #\n                            1025 St Clair River Dr \n                                 Algonac, MI 48001\n                            1-810-794-4941\n                            ', u'\nKroger Pharmacy\n                            2600 Pointe Tremble \n                            Algonac, MI 48001\n                            1-810-671-4002\n                            ', u'\nRite Aid Pharmacy 04943\n                            402 Pointe Tremble Road \n                            Algonac, MI 48001\n                            1-810-794-4985\n                            ']

这不是我想要的,因为它包含所有你的和其他垃圾,而且它们都在一个长字符串中。是否有捷径可寻?我还想最终将这些附加到已经存在的csv文件中,如果有一种简单的方法可以一举两得。

感谢。

1 个答案:

答案 0 :(得分:0)

u表示其unicode字符串。 \n是新行字符。您可以编写一个正则表达式来删除单行空格中的新行字符,多个空格,制表符等。

import re

CLEAN = re.compile('\s+')

address = [CLEAN.sub(' ', a.text).strip() for a in address]

或者用逗号替换新行,以便地址格式化有意义。

address = [CLEAN.sub(' ', a.text.replace('\n', ',')).strip() for a in address]