gpt4 book ai didi

Python正则表达式字符串数组到 float 组

转载 作者:行者123 更新时间:2023-11-28 16:26:25 27 4
gpt4 key购买 nike

我是 python 正则表达式的初学者。我实现了我所需要的,但它真的很难看,因为我缺少经验。我的目标是转换以下形式的字符串数组:

notes = ["10.0% higher", "5.0% lower", "Same as", "21.2% lower"]

到一个 float 数组,所以上面的数组产生:

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

最佳答案

使用 findall,您可以在单个正则表达式中执行此操作:

notes = ["10.0% higher", "5.0% lower", "Same as", "21.2% lower"]

changes = []
for note in notes:
m = re.findall("(?:(\d+\.\d+)% )?(higher|lower|Same as)", note)
if len(m):
if m[0][1] == 'higher':
changes += [float(m[0][0])]
elif m[0][1] == 'lower':
changes += [-float(m[0][0])]
else:
changes += [0.0]

print changes

关于Python正则表达式字符串数组到 float 组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36224573/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com