2016-10-10 403 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