为了账号安全,请及时绑定邮箱和手机立即绑定

我可以做些什么来让我的 split() 函数正常工作吗?

我可以做些什么来让我的 split() 函数正常工作吗?

呼如林 2024-01-04 16:44:10
我只是想问一下如何才能让我的 split 功能正常工作x_value = "7383 + 4536"我使用 pytesseract 来提取该字符串if '+' in x_value is not None:    x_value = re.split('[+`]', x_value)    try:        x_value = int(x_value[0]), int(x_value[1])    except:        x_value = int(x_value[0]), int(x_value[2])print(x_value)但我的问题是它打印出来['7383 + 4536\n\x0c']所以...伙计们,我真的需要你们的帮助...我只是一个想要学习编程的 14 岁男孩...我开始学习已经 3 周了...这是我的第一个项目...我希望你们可以帮助我改善...
查看完整描述

3 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

正则表达式+中的 表示前一项的“一个或多个”。

您应该\在模式中使用转义符来将其视为字符+

(另外,请注意\必须转义,或以 . 为前缀的字符串r。)

x_value = re.split( r'[\+`]', x_value )


查看完整回答
反对 回复 2024-01-04
?
萧十郎

TA贡献1815条经验 获得超12个赞

让我们逐行查看您的代码。


if '+' in x_value is not None:

    x_value = re.split('[+`]', x_value)

    try:

        x_value = int(x_value[0]), int(x_value[1])

    except:

        x_value = int(x_value[0]), int(x_value[2])

print(x_value)

if '+' in x_value is not None:

这条线是不正确的。'+' in x_value将被评估为True或False,因此这is not None不是您的意图。假设+is inside x_value,则该if语句的计算结果为:


if True is not None

这是当然的True。说不+在里面x_value,那么:


if False is not None

这也评估为True. 正确的方法很简单:


if '+' in x_value:

x_value = re.split('[+.]', x_value)

@Didier Trosset 对此进行了报道。


try堵塞

try:

    x_value = int(x_value[0]), int(x_value[1])

except:

    x_value = int(x_value[0]), int(x_value[2])

如果您的输入是这样的1 + 2,那么正确的正则表达式行应该返回一个包含两个对象的列表[1, 2]。在这种情况下,try在正则表达式行不返回 2 个数字的情况下,该语句正在捕获(如果抛出错误) ,但在捕获错误时,它会尝试添加第三个数字x_value[2],这也会抛出错误。


查看完整回答
反对 回复 2024-01-04
?
郎朗坤

TA贡献1921条经验 获得超9个赞

为什么不尝试一些更简单的事情,比如:


x_value = "7383 + 4536"


if "+" in x_value:

    values = [int(value.strip()) for value in x_value.split("+")]

    print(values)

它打印[7383, 4536].


好处是您不需要任何正则表达式即可工作。


查看完整回答
反对 回复 2024-01-04
  • 3 回答
  • 0 关注
  • 51 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信