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].
好處是您不需要任何正則表達式即可工作。
添加回答
舉報