3 回答
TA贡献1825条经验 获得超4个赞
正则表达式+
中的 表示前一项的“一个或多个”。
您应该\
在模式中使用转义符来将其视为字符+
。
(另外,请注意\
必须转义,或以 . 为前缀的字符串r
。)
x_value = re.split( r'[\+`]', x_value )
TA贡献1815条经验 获得超13个赞
让我们逐行查看您的代码。
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],这也会抛出错误。
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].
好处是您不需要任何正则表达式即可工作。
添加回答
举报