我是Python正则表达式的初学者。我达到了我所需要的,但是由于我缺少经验,这真的很难看。我的目标是形式的字符串数组转换:Python正则表达式字符串数组浮点数组
notes = ["10.0% higher", "5.0% lower", "Same as", "21.2% lower"]
到彩车的行列,从而使上述阵列产量:
changes = [10.0,-5.0,0,-21.2]
下面的代码实现了,但确实是重复的,不好的风格。我该如何优化?
changes = []
for note in notes:
m = re.search(r"(?:(\d+\.\d+\%\shigher)|(\d+\.\d+\%\slower)|(Same\sas))", note)
if m:
if m.groups(0):
if m.groups(0)[0]:
changes += [float(re.match(r"(\d+\.\d+)", m.groups(0)[0]).groups(0)[0])]
elif m.groups(0)[1]:
changes += [-float(re.match(r"(\d+\.\d+)", m.groups(0)[1]).groups(0)[0])]
else:
changes += [0.0]
print changes
你真的应该在CodeReview.SE上发布这个...另外,你可以改变这两个if语句,如果m:如果m.groups(0):到一个,如果m和m.groups (0):' – Druzion