【问题标题】:Remove HTML Tags from Python List从 Python 列表中删除 HTML 标记
【发布时间】:2014-07-03 23:45:30
【问题描述】:

我有一个包含三个值的 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's 和 \n's 和其他垃圾,而且都在一个长字符串中。是否有捷径可寻?如果有一种简单的方法可以用一块石头杀死两只鸟,我还想最终将这些附加到一个已经存在的 csv 文件中。

谢谢。

【问题讨论】:

标签: python html parsing append


【解决方案1】:

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]

【讨论】:

  • \s 不会删除新行。正则表达式是一个很好的解决方案,但是你需要在你的 re.compile 中专门放入 \n。我也看不出用空格替换新行的意义。
  • @Everst \s 等价于[ \t\n\r\f\v]。它确实删除了新行。
  • 是的,我的错,当未指定 UNICODE 标志时,它等同于该正则表达式集。
猜你喜欢
  • 1970-01-01
  • 2010-10-16
  • 2019-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-21
  • 2010-09-19
  • 2017-09-06
相关资源
最近更新 更多