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.写错误。必须是 str 而不是 resultnet的主要内容,如果未能解决你的问题,请参考以下文章
DataFrame 无法迭代:出现以下错误:元组索引必须是整数或切片,而不是 str
TypeError: function() 参数 1 必须是代码,而不是 str
尝试从一系列字典中检索键时出现“类型错误:列表索引必须是整数或切片,而不是 str”
TypeError: connect() 参数 4 必须是 str,而不是 WindowsPath。 /*我在简单登录 django 项目中遇到的错误*/