我是一个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
if m: if m.groups(0):
合并成一个if m and m.groups(0):
。 - Kaspar Lee