f.写错误。必须是 str 而不是 resultnet

Posted

技术标签:

【中文标题】f.写错误。必须是 str 而不是 resultnet【英文标题】:f.write error. Must be str not resultnet 【发布时间】:2019-01-10 15:06:50 【问题描述】:

您好,我在 f.write 方面遇到了麻烦。 我从 Newegg.com 网站抓取了网页,现在我想将一个循环写入 csv 文件。

代码:

filename='NeweggWebscrape.csv'
f=open(filename,'w')

headers='ProductName,Details,Delivery\n'

f.write(headers)

for namedesc in name_desc:
    ProductName = namedesc.text.strip()

    features= page_soup.findAll ('ul', 'class' : 'item-features')
    Details=feature.text.strip()

    shipping=page_soup.findAll ('li', 'class' : 'price-ship')
    Delivery=shippinginfo.text.strip()

    print('Name' + ProductName)
    print('Details' + Details)
    print('Delivery' + Delivery)

f.write (ProductName + "," + Details.replace(",", "|") + "," + shipping + "\n")

f.close()

但是,我在 powershell 中遇到的错误是:

File "neweggwebscrape.py", line 76, in <module>
    f.write (ProductName + "," + Details.replace(",", "|") + "," + shipping + "\n")
TypeError: must be str, not ResultSet

我已经尝试修复它,但如果有人可以提供帮助,我会有点卡住。

非常感谢

约瑟夫

【问题讨论】:

shipping 不是字符串,而是一组结果。在与其他字符串连接之前,您必须将其转换为字符串。 谢谢,我该怎么做?蟒蛇新手。谢谢 【参考方案1】:

shipping 不是字符串,而是一组结果。在与其他字符串连接之前,您必须将其转换为字符串。从您的代码来看,您想要提取每个列表项的文本部分。这样做之后,你必须加入碎片。以下代码使用逗号进行连接,您可以使用任何其他字符串:

shippinginfo = ",".join(s.text.strip() for s in shipping)

【讨论】:

我在哪里添加?谢谢你。。我很困惑。这是我的第一天:/ 就在你定义shipping的那一行之后。 非常感谢您的帮助:) 现在我遇到了权限错误。文件“neweggwebscrape.py”,第 57 行,在 f=open(filename,'w') PermissionError: [Errno 13] Permission denied: 'NeweggWebscrape.csv' 因为这是一个不同的问题,你必须用不同的代码示例发表不同的帖子。据我所知,您尝试在不允许修改的文件夹中创建文件。

以上是关于f.写错误。必须是 str 而不是 resultnet的主要内容,如果未能解决你的问题,请参考以下文章

错误列表索引必须是整数或切片,而不是str

DataFrame 无法迭代:出现以下错误:元组索引必须是整数或切片,而不是 str

TypeError: function() 参数 1 必须是代码,而不是 str

尝试从一系列字典中检索键时出现“类型错误:列表索引必须是整数或切片,而不是 str”

TypeError: connect() 参数 4 必须是 str,而不是 WindowsPath。 /*我在简单登录 django 项目中遇到的错误*/

python套接字错误:AF_INET地址必须是元组,而不是str