从Python列表中移除HTML标签

0 投票
1 回答
2211 浏览
提问于 2025-04-18 12:04

我有一个包含三个值的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                            ']

这就不是我想要的,因为里面有很多u和\n之类的杂七杂八的东西,而且全都连成了一长串字符串。有没有简单的方法可以做到这一点?我还想把这些结果添加到一个已经存在的CSV文件里,如果能一举两得就更好了。

谢谢。

1 个回答

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]

撰写回答