【问题标题】:f.write error. Must be str not resultnetf.写错误。必须是 str 而不是 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 不是字符串,而是一组结果。在与其他字符串连接之前,您必须将其转换为字符串。
  • 谢谢,我该怎么做?蟒蛇新手。谢谢

标签: python string csv typeerror


【解决方案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'
  • 因为这是一个不同的问题,你必须用不同的代码示例发表不同的帖子。据我所知,您尝试在不允许修改的文件夹中创建文件。
猜你喜欢
  • 2016-09-29
  • 2018-04-26
  • 2022-11-21
  • 2023-03-29
  • 2018-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多