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

我只是想问一下如何才能让我的 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 周了...这是我的第一个项目...我希望你们可以帮助我改善...


呼如林
浏览 59回答 3
3回答

凤凰求蛊

正则表达式+中的 表示前一项的“一个或多个”。您应该\在模式中使用转义符来将其视为字符+。(另外,请注意\必须转义,或以 . 为前缀的字符串r。)x_value = re.split( r'[\+`]', x_value )

萧十郎

让我们逐行查看您的代码。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],这也会抛出错误。

郎朗坤

为什么不尝试一些更简单的事情,比如:x_value = "7383 + 4536"if "+" in x_value:    values = [int(value.strip()) for value in x_value.split("+")]    print(values)它打印[7383, 4536].好处是您不需要任何正则表达式即可工作。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python