2015-02-10 68 views
-3

我有"2-20,41"。當第三個值不總是在那裏時,我如何在python中解析它。情況1 = "2-20",情況2 = "2-20,41",情況3 = "2-20,41,42"如何在Python中解析不同分隔符的值

我需要檢查我的值x是否在逗號後的範圍內。逗號後面可能有一個值,或者兩個逗號後有兩個不同的值。

+3

你能包括一個例子的輸入和輸出,顯示所期望的效果? – 2015-02-10 04:27:43

+0

對不起,基本上我有一個值,x = 10,數字範圍[2,20],所以情況1:x = 10,在[2,10]的範圍內,那麼它將返回true。情況2:如果x = 41,並且檢查範圍2-20,加上第三個數字41,那麼返回也是正確的。我的問題是與第三個值41,可能會或可能不存在,如何檢查我的值x = 41或不? – PChao 2015-02-10 04:36:30

+2

請澄清問題。 – wwii 2015-02-10 04:38:42

回答

0
>>> re.search('^(\d+)-(\d+)((,\d+){0,2})$','2-20').groups() 
('2', '20', '', None) 
>>> re.search('^(\d+)-(\d+)((,\d+){0,2})$','2-20,41').groups() 
('2', '20', ',41', ',41') 
>>> re.search('^(\d+)-(\d+)((,\d+){0,2})$','2-20,41,42').groups() 
('2', '20', ',41,42', ',42') 
+0

'''re.split(r'[ - ,]',s)''' – wwii 2015-02-10 04:37:05

+0

@wwii這會比較容易。但也許海報想要更嚴格的假設。 – 2015-02-10 04:51:41

+0

非常感謝您的幫助,這正是我所期待的。 – PChao 2015-02-10 05:55:35

-1
for i in '2-30,40,50,100'.split(','): 
    parts = i.split('-') 
    if len(parts) == 2: 
    if n >= int(parts[0]) and n <= int(parts[1]): 
     print 'match' 
     break 
    elif n == int(parts[0]): 
    print 'match' 
    break 
+0

如果您可以編輯您的答案並解釋您所展示的代碼的功能,以及代碼爲什麼/如何回答這個問題,這可能真的有所幫助。代碼塊本身通常不是有用的答案。 – 2015-02-10 06:24:24