Python';s strip()函数不工作

Python';s strip()函数不工作,python,beautifulsoup,Python,Beautifulsoup,我有以下HTML,我想刮: <div class="messaging-device"> " Text I want " <span class="edit-panel"> <a href="">Edit</a> </span> </div> 不幸的是,文本后面有很多换行符,所以我改了 text = div.get_text()

我有以下HTML,我想刮:

<div class="messaging-device">
     "
                 Text I want 
     "
     <span class="edit-panel">
          <a href="">Edit</a>
     </span>
</div>
不幸的是,文本后面有很多换行符,所以我改了

text = div.get_text().strip().split(" ", 1)[0] 


但这一变化完全消除了“我想要的文本”。有人知道我可以正确地删除尾随的换行符吗?

您发布的代码无法运行。而且,即使在我猜测如何修复它以使其运行之后,它实际上并没有实现您所声称的功能。但我很确定我知道错误在哪里

此代码不返回空字符串,而是返回一个

…这并不是因为
strip
。因为,与您声称的相反,此代码首先不包含您想要的文本:

text = div.get_text().strip().split(" ", 1)[0]
…而是
“\n”
。当然,这会给你一个空字符串


如果打印出中间部分,您可以看到原因:

>>> div.get_text()
'\n     "\n                 Text I want \n     "\n     \nEdit\n\n'
>>> div.get_text().strip()
'"\n                 Text I want \n     "\n     \nEdit'
>>> div.get_text().strip().split(" ", 1)
['"\n', '                Text I want \n     "\n     \nEdit']
>>> div.get_text().strip().split(" ", 1)[0]
'"\n'
>>> div.get_text().strip().split(" ", 1)[0].strip()
'"'
看起来您实际上要做的是在前两个
字符之间查找文本,然后将其拆分:

>>> div.get_text().strip().split('"', 2)[1].strip()
'Text I want'

但是,我认为,通过包含所有后代文本而不仅仅是直接子文本,你正在使事情变得更加复杂。如果我们没有要处理的
Edit
部分,那么整个事情就是你想要的文本,由复杂的空格、换行符和引号组成,我们可以将它们全部去掉一次性:

>>> div.contents[0]
'\n     "\n                 Text I want \n     "\n
>>> div.contents[0].strip(' \n"')
 'Text I want'

首先,如果你想摆脱仅仅是尾随空格,而不是前导和尾随空格,请使用
rstrip
,而不是
strip
。但是同时,如果你想让我们调试你的问题,你需要给我们一个演示问题并可以调试的示例。很难相信整个
文本=…[0]
返回了一个充满非空白字符的字符串,但添加了
.strip()
最后清空了它,但如果真的发生了这种情况,我们肯定需要能够重新编程以找到错误。Strip、lstrip和rstrip让您指定将剥离哪些字符:如果您单独使用
Strip
有问题,请发布一个示例来说明
Strip
问题——我们不应该看到任何问题
bs
code,因为这对您很有用。另外,在发布到这里之前,请阅读
strip
fgamily的文档并解决您的理解问题。HTML是否真的包含您想要的文本周围的
字符,或者这就是它在浏览器控制台中的显示方式?使用
查看源代码
查看实际的HTML。
>>> div.get_text()
'\n     "\n                 Text I want \n     "\n     \nEdit\n\n'
>>> div.get_text().strip()
'"\n                 Text I want \n     "\n     \nEdit'
>>> div.get_text().strip().split(" ", 1)
['"\n', '                Text I want \n     "\n     \nEdit']
>>> div.get_text().strip().split(" ", 1)[0]
'"\n'
>>> div.get_text().strip().split(" ", 1)[0].strip()
'"'
>>> div.get_text().strip().split('"', 2)[1].strip()
'Text I want'
>>> div.contents[0]
'\n     "\n                 Text I want \n     "\n
>>> div.contents[0].strip(' \n"')
 'Text I want'