Lstrip 和 Rstrip 不起作用,需要帮助从 Python 3 的输出中删除文本

Posted

技术标签:

【中文标题】Lstrip 和 Rstrip 不起作用,需要帮助从 Python 3 的输出中删除文本【英文标题】:Lstrip and Rstrip won't work, need help removing text from an output in Python 3 【发布时间】:2020-10-18 23:04:57 【问题描述】:

输出是列表的一部分。当我尝试使用 type() 找出输出的类型时,它返回:.

我正在尝试删除“href”左侧的所有内容和“

这是我列表中的输出之一的示例:

<a class="BlogList-item-image-link" href="/new-blog/nova-approval">
<img  data-image="https://static1.squarespace.com/static/54ceeff4e4b0d9096117315a/5a3ff7e48165f5d70b78414a/5a504ba90d9297f9a55e4ab6/1516062801655/7P1A5814+cropped.jpg" data-image-dimensions="2432x2688" data-image-focal-point="0.5,0.5" data-load="false" data-src="https://static1.squarespace.com/static/54ceeff4e4b0d9096117315a/5a3ff7e48165f5d70b78414a/5a504ba90d9297f9a55e4ab6/1516062801655/7P1A5814+cropped.jpg"/>
</a>

【问题讨论】:

能否举个例子。 添加minimal, reproducible example 那么要获取href属性的内容吗? 【参考方案1】:

使用lstriprstrip 不是答案。

你试过查看bs4 docs吗?

因为您的输出类型是 bs4 对象。只需找到对象的属性即可获取href

<a class="BlogList-item-image-link" href="/new-blog/nova-approval">
<img  data-image="https://static1.squarespace.com/static/54ceeff4e4b0d9096117315a/5a3ff7e48165f5d70b78414a/5a504ba90d9297f9a55e4ab6/1516062801655/7P1A5814+cropped.jpg" data-image-dimensions="2432x2688" data-image-focal-point="0.5,0.5" data-load="false" data-src="https://static1.squarespace.com/static/54ceeff4e4b0d9096117315a/5a3ff7e48165f5d70b78414a/5a504ba90d9297f9a55e4ab6/1516062801655/7P1A5814+cropped.jpg"/>
</a>
from bs4 import BeautifulSoup

soup = BeautifulSoup('html') #put the link there

links = soup.find_all('a') # All of the anchor tags in a list

for link in links:
    print(link.get('href'))

这将打印 HTML 文件中的所有 href 值。

【讨论】:

【参考方案2】:

您可能正在尝试提取 href 中的链接。为此,您不需要剥离字符串。您可以通过以下方式进行操作 -

string =  '''<a class="BlogList-item-image-link" href="/new-blog/nova-approval">
<img  data-image="https://static1.squarespace.com/static/54ceeff4e4b0d9096117315a/5a3ff7e48165f5d70b78414a/5a504ba90d9297f9a55e4ab6/1516062801655/7P1A5814+cropped.jpg" data-image-dimensions="2432x2688" data-image-focal-point="0.5,0.5" data-load="false" data-src="https://static1.squarespace.com/static/54ceeff4e4b0d9096117315a/5a3ff7e48165f5d70b78414a/5a504ba90d9297f9a55e4ab6/1516062801655/7P1A5814+cropped.jpg"/>
</a>'''


print( string[string.find('href="')+6:string.find('>')-1] )

输出:

/new-blog/nova-approval

在上面的print() 语句中,string.find('href="') 将返回该字符串的索引,然后我们从该索引 + 6 循环到 href 标记的末尾。这是假设&gt; 紧跟在href 之后。

希望这会有所帮助!

【讨论】:

以上是关于Lstrip 和 Rstrip 不起作用,需要帮助从 Python 3 的输出中删除文本的主要内容,如果未能解决你的问题,请参考以下文章

文件——rstrip() lstrip()和 strip()zip() 函数

strip()lstrip()rstrip()用法

Python误区之strip,lstrip,rstrip

python lstrip,rstrip 的 用法

python3----strip lstrip rstrip

Python中strip()lstrip()rstrip()用法详解