我是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的整数值(负数和正数)并将它们存储在变量中以便我可以使用数字?
我试过这样的smth,但列表是空的..
for line in data[0]:
pattern = re.compile("([A-Z]=(-?\d+?),[A-Z]=(-?\d+?))")
store = pattern.findall(line)
print store
谢谢你,感谢你
答案 0 :(得分:0)
对于正整数,使用逗号或不使用逗号:namespace Program
{
public partial class __Dialog : Form
{
public Main p;
public __Dialog()
{
InitializeComponent();
}
private void Button_Click(object sender, EventArgs e)
{
p.Test();
}
}
}
-?(?:\d+,?)+
-?
打开一个组
(?:
一个或多个数字
\d+
可选逗号
,?
关闭群组
)
这个群体可能有一个或一个时期
答案 1 :(得分: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}