python如何正则匹配浮点值_Python正则表达式字符串数组到浮点数组
我是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,regex
總結
以上是生活随笔為你收集整理的python如何正则匹配浮点值_Python正则表达式字符串数组到浮点数组的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何查看文件夹里有几张图片_如何把几张图
- 下一篇: python包实际怎么使用_Python