只能将 str (不是“NoneType”)连接到 str 的问题

Posted

技术标签:

【中文标题】只能将 str (不是“NoneType”)连接到 str 的问题【英文标题】:Problem with can only concatenate str (not "NoneType") to str 【发布时间】:2021-01-26 00:10:16 【问题描述】:

当我想发送带有跨度文本的不和谐消息时,我得到了这个 '''只能将str(不是“NoneType”)连接到str''' 打印有效,但发送不和谐 webhook。

所以这是我的问题,如何解决这个问题。

我的代码:

from discord_webhook import DiscordWebhook, DiscordEmbed
import bs4
import lxml
import requests
from bs4 import BeautifulSoup

webhook=DiscordWebhook(url="X")
link='https://.com'

def sizes():
   r=requests.get(link)
   soup=bs4.BeautifulSoup(r.text,"lxml")
   Size=soup.find_all('span', 'class': 'js-tooltipContent g-dn')
   for span in Size:
       print(span.text.replace('EU:','').strip())

embed = DiscordEmbed(
    title= "size", 
    description= "sizes: " + sizes(),
    color=242424,
    )
    
webhook.add_embed(embed)
response = webhook.execute()

【问题讨论】:

是的,我想退货 您是否尝试过将其显式转换为字符串? 【参考方案1】:

问题是,sizes 没有返回任何内容。 print 不返回值,它只是打印。您需要执行以下操作:

acc = ""
for span in Size:
   acc += span.text.replace('EU:','').strip()  # Concatenate the strings together
return acc

还有更有效的方法可以使用列表理解/生成器表达式和join

return "".join(span.text.replace('EU:','').strip() for span in Size)

但这变得有点复杂了。

【讨论】:

它不能完美运行,因为只有第一行文本不是全部返回。 有 size: S,M,L,XL,XXL ,但脚本只返回 S @DemonsAreHere4000 这会将所有spans 连接在一起。如果您没有获得其余尺寸,则表明 Size 缺少数据。在循环之前做print(Size)来验证数据。 print(Size) 正在打印所有尺寸 soup.find_all('span', 'class': 'js-tooltipContent g-dn') Out[144]: [<span class="js-tooltipContent g-dn"> EU: S </span>, <span class="js-tooltipContent g-dn"> EU: M </span>, <span class="js-tooltipContent g-dn"> EU: L </span>, <span class="js-tooltipContent g-dn"> EU: XL </span>, <span class="js-tooltipContent g-dn"> EU: XXL </span>]

以上是关于只能将 str (不是“NoneType”)连接到 str 的问题的主要内容,如果未能解决你的问题,请参考以下文章

只能将 str (不是“字节”)连接到 str

TypeError:只能将列表(不是“str”)连接到列表 -

Pandas TypeError:只能将str(不是“int”)连接到str

解决 TypeError:只能将元组(不是“str”)连接到元组

TypeError:在使用 Python 进行网络抓取时,只能将 str(而不是“列表”)连接到 str 错误

连接到 SQL 服务器时,Python pymssql 错误“TypeError:'NoneType' 类型的参数不可迭代”