从Python列表中移除HTML标签
我有一个包含三个值的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]