3 回答

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超4個(gè)贊
正則表達(dá)式+
中的 表示前一項(xiàng)的“一個(gè)或多個(gè)”。
您應(yīng)該\
在模式中使用轉(zhuǎn)義符來將其視為字符+
。
(另外,請注意\
必須轉(zhuǎn)義,或以 . 為前綴的字符串r
。)
x_value = re.split( r'[\+`]', x_value )

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個(gè)贊
讓我們逐行查看您的代碼。
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不是您的意圖。假設(shè)+is inside x_value,則該if語句的計(jì)算結(jié)果為:
if True is not None
這是當(dāng)然的True。說不+在里面x_value,那么:
if False is not None
這也評估為True. 正確的方法很簡單:
if '+' in x_value:
x_value = re.split('[+.]', x_value)
@Didier Trosset 對此進(jìn)行了報(bào)道。
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,那么正確的正則表達(dá)式行應(yīng)該返回一個(gè)包含兩個(gè)對象的列表[1, 2]。在這種情況下,try在正則表達(dá)式行不返回 2 個(gè)數(shù)字的情況下,該語句正在捕獲(如果拋出錯(cuò)誤) ,但在捕獲錯(cuò)誤時(shí),它會嘗試添加第三個(gè)數(shù)字x_value[2],這也會拋出錯(cuò)誤。

TA貢獻(xiàn)1921條經(jīng)驗(yàn) 獲得超9個(gè)贊
為什么不嘗試一些更簡單的事情,比如:
x_value = "7383 + 4536"
if "+" in x_value:
values = [int(value.strip()) for value in x_value.split("+")]
print(values)
它打印[7383, 4536].
好處是您不需要任何正則表達(dá)式即可工作。
添加回答
舉報(bào)