Python 从列表中提取由html标记包围的字符串?

Python 从列表中提取由html标记包围的字符串?,python,python-2.7,beautifulsoup,Python,Python 2.7,Beautifulsoup,我使用BeautifulSoup解析网站并存储内容。其形式如下: records = [[[<p>data_1_1</p>], [<p>data_1_2</p>],[], [<li>data_1_3</li>]], [[<p>data_2_1</p>], [<p>data_2_2</p>], [], [<li>data_2_3</li&g

我使用BeautifulSoup解析网站并存储内容。其形式如下:

records = [[[<p>data_1_1</p>], [<p>data_1_2</p>],[], [<li>data_1_3</li>]],
           [[<p>data_2_1</p>], [<p>data_2_2</p>], [], [<li>data_2_3</li>]]]
我尝试了列表理解:

text_records = [sum(record, []) for record in records]
但是文本仍然包装在
  • 标记中

    text_records = [item.string for item in sum(record, []) for record in records]
    
    从标记中提取文本,但这会产生一个大列表,相同的值会重复多次


    我知道python中有很多关于列表的理解,我已经搜索过了,但是我找不到任何有助于解决这种情况的方法。

    编辑-这甚至适用于多个项目:

    [sum([v.string for v in [item for item in record if item]], []) for record in records]
    
    添加总和将确保所有列表都合并到每个记录的单个列表中

    原件:

    只要您始终只有单个项目的内部列表,这应该可以正常工作:

    [[item[0].string for item in row if item] for row in records]
    

    这将遍历每个记录,确保该记录与if语句一起存在,然后以字符串格式将列表的第一个元素附加到新记录中

    这将很好地完成这项工作(尽管如此多的for循环很烦人,但欢迎任何建议)


    records1=[BeautifulSoup(k).j in i的记录中i的文本为j中的k]

    谢谢,这很有效。为什么
    项[0]
    虽然如此?里面还有什么?欢迎,很高兴它对你有用!这并不是因为里面有额外的项目,只是因为它是一个列表对象。因此,您必须从列表中提取项目(即使只有一个),否则它将被视为一个单独的列表。
    [[item[0].string for item in row if item] for row in records]