You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pyautogui+pytesseract处理价格时int转换报错求助

问题原因

你的报错核心是:preço1的内容是'20.00\n',包含小数点和换行符,而int()只能转换纯整数格式的字符串,遇到小数点和多余字符就会触发ValueError。另外原代码的if语句还有括号不匹配的语法错误。

修复方案

直接按以下步骤调整代码:

  1. 先清理字符串中的空白和换行符:用strip()方法去掉首尾的换行、空格等无用字符
  2. 将清理后的字符串转为浮点数(因为是价格,本身带小数),再和100比较;如果确实需要整数,可以再转int
  3. 修正if语句的语法错误
修正后的完整代码
import pyautogui as p
import pytesseract
from PIL import Image

im1 = p.screenshot(region=(280,951, 85, 25))
im1.save(r"C:\Users\Ball\Desktop\notas\peçaspreço.png")
preço1 = pytesseract.image_to_string(Image.open('peçaspreço.png'))
# 清理字符串中的换行和空白
preço1_clean = preço1.strip()
# 转为浮点数(价格本身是小数,用浮点数比较更合理)
preço_num = float(preço1_clean)
print(preço_num)
# 修正语法错误,执行比较逻辑
if preço_num > 100:
    # 这里写你的业务逻辑代码
    print("价格超过100")
else:
    print("价格未超过100")
额外优化建议

如果担心OCR识别出非数字字符(比如货币符号、乱码),可以用正则表达式精准提取数字部分:

import re
# 提取字符串中的数字及小数点
num_match = re.search(r'\d+\.?\d*', preço1)
if num_match:
    preço_num = float(num_match.group())
else:
    print("未识别到有效价格")

内容的提问来源于stack exchange,提问作者Doginio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 09:45:28