【问题标题】:How can I solve "ValueError: Cannot convert to Excel"? (Using Python & openpyxl)?如何解决“ValueError:无法转换为 Excel”? (使用 Python 和 openpyxl)?
【发布时间】:2019-08-03 12:35:11
【问题描述】:

我正在使用 lxml 从网站上抓取价格,我想使用 openpyxl 将该价格插入到现有的 Excel 文件中。当我运行代码时,我得到了错误:

ValueError: 无法将 ['$364'] 转换为 Excel

('$364' 是刮掉的价格)。我该如何解决?看来代码的第 11 行:sheet['A1'] = price 是问题所在。我的整个代码如下:

from lxml import html
import requests
page = requests.get('http://www.randomlengths.com/Woodwire/RL-Lbr-Pnl/')
tree = html.fromstring(page.content)
price = tree.xpath('//*[@id="main-frame"]/div/div[1]/table/tbody/tr[2]/td[2]/strong/text()')
print(price)

import openpyxl
xfile = openpyxl.load_workbook('C:/Users/noah.merkousko/randomlengthslumber.xlsx')
sheet = xfile.get_sheet_by_name('Framing Lumber')
sheet['A1'] = price
xfile.save('random lengths lumber test.xls') 

【问题讨论】:

    标签: python excel openpyxl valueerror


    【解决方案1】:

    "ValueError: Cannot convert ['$364'] to Excel" 告诉你错误。您正在尝试将列表 ['$364'] 放入包含值的单元格中。您可以通过在将其放入 Excel 时编制索引或在从在线解析时编制索引来解决此问题。

    选项 1:

    price = tree.xpath('//*[@id="main-frame"]/div/div[1]/table/tbody/tr[2]/td[2]/strong/text()')[0] # index at 0
    

    选项 2:

    sheet['A1'] = price[0] # index when you put into Excel
    

    值得注意的是,如果站点被更改并且值不再位于'//*[@id="main-frame"]/div/div[1]/table/tbody/tr[2]/td[2]/strong/text()',这可能会引入IndexValue 错误,否则应该可以解决您的问题

    【讨论】:

    • 嗨@Reedinationer,感谢您的帮助。看起来如果我将您在我的代码中列出的两个选项结合起来,它可以解决 ValueError。但是,它只将“$”放在 excel 文件中。它不会将完整的“364 美元”价格放入 excel 文件中。有什么建议吗?
    • @Scooter 你不应该把它们结合起来。使用 one 将获得 list 中的第一项(字符串 '$364')。结合使用另一个选项将获得字符串中的第一项('$' 字符)。我的意思是你有两种方法来解决你的问题,你应该选择一个选项。
    • 当我只使用您列出的选项之一时,我仍然会收到 ValueError。不知道为什么。
    【解决方案2】:

    您可以将错误作为异常捕获。

    try:
        sheet['A1'] = price
    except ValueError:
        print("Handling the error case")
    

    【讨论】:

    • 嗨@Jack,感谢您的帮助。看起来解决了 ValueError,但它没有将任何数据放入 excel 文件中。知道为什么会发生这种情况吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-10
    • 2020-01-22
    • 2012-10-10
    • 1970-01-01
    • 2022-01-02
    • 2022-01-18
    • 2020-03-11
    相关资源
    最近更新 更多