我有一個字符串看起來像的Python:使用正則表達式來移除某些
ABC(a =2,b=3,c=5,d=5,e=Something)
我想要的結果是一樣
ABC(a =2,b=3,c=5)
什麼是做到這一點的最好方法是什麼?我更喜歡在Python中使用正則表達式。
對不起,事情發生了轉變,原始字符串改成
ABC(a =2,b=3,c=5,dddd=5,eeee=Something)
我有一個字符串看起來像的Python:使用正則表達式來移除某些
ABC(a =2,b=3,c=5,d=5,e=Something)
我想要的結果是一樣
ABC(a =2,b=3,c=5)
什麼是做到這一點的最好方法是什麼?我更喜歡在Python中使用正則表達式。
對不起,事情發生了轉變,原始字符串改成
ABC(a =2,b=3,c=5,dddd=5,eeee=Something)
非正則表達式
>>> s="ABC(a =2,b=3,c=5,d=5,e=Something)"
>>> ','.join(s.split(",")[:-2])+")"
'ABC(a =2,b=3,c=5)'
如果你想正則表達式來擺脫總是最後2
>>> s="ABC(a =2,b=3,c=5,d=5,e=6,f=7,g=Something)"
>>> re.sub("(.*)(,.[^,]*,.[^,]*)\Z","\\1)",s)
'ABC(a =2,b=3,c=5,d=5,e=6)'
>>> s="ABC(a =2,b=3,c=5,d=5,e=Something)"
>>> re.sub("(.*)(,.[^,]*,.[^,]*)\Z","\\1)",s)
'ABC(a =2,b=3,c=5)'
如果它總是第3,
>>> s="ABC(a =2,b=3,c=5,d=5,e=Something)"
>>> re.sub("([^,]+,[^,]+,[^,]+)(,.*)","\\1)",s)
'ABC(a =2,b=3,c=5)'
>>> s="ABC(q =2,z=3,d=5,d=5,e=Something)"
>>> re.sub("([^,]+,[^,]+,[^,]+)(,.*)","\\1)",s)
'ABC(q =2,z=3,d=5)'
longer = "ABC(a =2,b=3,c=5,d=5,e=Something)"
shorter = re.sub(r',\s*d=\d+,\s*e=[^)]+', '', longer)
# shorter: 'ABC(a =2,b=3,c=5)'
當OP終於知道有多少元素在列表中都是存在的,他也可以使用:
shorter = re.sub(r',\s*d=[^)]+', '', longer)
它削減了, d=
及其後的所有內容,但不是右括號。
import re
re.sub(r',d=\d*,e=[^\)]*','', your_string)
他們總是最後兩個。 – user483144 2010-10-21 14:40:21
對不起,他們並不總是最後兩個。 – user483144 2010-10-21 14:49:17
@ user483144:如果您有其他信息,請勿將其置於評論中,而是編輯您的問題。 – 2010-10-21 14:50:08