2016-10-10 406 views
-1

我是新來學習Python中的正則表達式,我想知道如何在Python中使用正則表達式來存儲整數(正數和負數)我想成列表!正則表達式在Python中爲正整數和負整數

例如

這是列表中的數據。

data = 
    [u'\x1b[0m[\x1b[1m\x1b[0m\xbb\x1b[0m\x1b[36m]\x1b[0m (A=-5,B=5)', 

    u'\x1b[0m[\x1b[1m\x1b[0m\xbb\x1b[0m\x1b[36m]\x1b[0m (A=5,Y=5)', 

    u'\x1b[0m[\x1b[1m\x1b[10m\xbb\x1b[0m\x1b[36m]\x1b[0m : '] 

我如何提取A和B(陰性及陽性)的整數值,並將其存儲在一個變量,這樣我可以用數字的工作?

我試圖水木清華這樣的,但列表爲空..

for line in data[0]: 
     pattern = re.compile("([A-Z]=(-?\d+?),[A-Z]=(-?\d+?))") 
     store = pattern.findall(line) 

print store 

謝謝你,欣賞它

+0

如果你需要幫助,你需要發佈[最小,完整,可驗證的示例](http://stackoverflow.com/help/mcve)你的代碼的試過。 – CAB

+0

對不起!我編輯了我的帖子:) – LearningNewbie

回答

0

對於正和負整數,帶或不帶逗號的使用之間:-?(?:\d+,?)+

-?有無帶負號
(?:打開羣組
\d+一個或多個數字
,?可選的逗號
)關閉組
(?:\d+,?)+這組可能有一個或則一個occencences

0

取決於你試圖完成什麼,這可能工作:

import re 

data = [ 
    u'\x1b[0m[\x1b[1m\x1b[0m\xbb\x1b[0m\x1b[36m]\x1b[0m (A=-5,B=5)', 
    u'\x1b[0m[\x1b[1m\x1b[0m\xbb\x1b[0m\x1b[36m]\x1b[0m (A=5,Y=5)', 
    u'\x1b[0m[\x1b[1m\x1b[10m\xbb\x1b[0m\x1b[36m]\x1b[0m : ' 
] 

for line in data: 
    m = re.search('\((\w)=(-?\d+),(\w)=(-?\d+)\)', line) 
    if not m: 
      continue 
    myvars = {} 
    myvars[m.group(1)] = int(m.group(2)) 
    myvars[m.group(3)] = int(m.group(4)) 
    print myvars 

這會產生包含當前行中變量的字典(myvars)。如果你使用這個,你將不得不在你試圖從字典中獲取之前檢查你想要的變量。上面的輸出是:

{u'A': -5, u'B': 5} 
{u'A': 5, u'Y': 5} 
+0

我想將整數值(例如-5或5)存儲到變量中!我可以知道在剝離字符前,我可以如何實現這一目標嗎? – LearningNewbie

+0

變量是否需要與字符串中的名稱相同?將它作爲類實例變量是否可以? – FamousJameous

+0

它不!我只需要將相關數字(包括正整數和整數)存儲到一個變量中,以便我可以使用這些值:) 我試過這樣但是列表爲空.. for line in data [0] : pattern = re.compile(「\([AZ] =( - ?\ d +?),[AZ] =( - ?\ d +?)\)」) store = pattern.findall(line) print商店 – LearningNewbie