我的数据包含带有浮点数字的字符串,例如
"['0.0'" and '82.00.0' and '82.0\n'
我只想提取浮点数,直到像这样的小数点后两位/一
"['0.0'" and '82.00.0' and '82.0\n' to 0.0, 82.0, 82.0
数据结构是一个大引用的CSV,例如:
"0.0, 82.00.0,...., 82.0\n"
我正在遍历这些以将它们存储到临时
tempprices.split(',') temp =[] for n in range(l, len(tempprices)-1): temp.append(map(ast.literal_eval,re.findall(r'(?<!\S)[+-]?\d+\.\d{1,2}(?!\.*\d)',tempprices[n])))
其中l是某个索引值。
我想像这样将这些附加到
temp
如何实现呢?
最佳答案
有几个问题:
您未将拆分块分配给变量(请参见tempprices.split(',')
)
实际上,您必须提取1个值,所以re.sub
可以工作,但是re.search
更安全
您可以使用以下修复程序:
import re
tempprices = "0.0, 82.00.0,...., 82.0\n"
cells = tempprices.split(',')
temp =[]
for t in cells:
mObj = re.search(r'-?\d+\.\d{1,2}', t)
if mObj:
temp.append(float(mObj.group()))
print(temp)
请参见IDEONE demo
如果每个单元格中可以有多个浮点值,则必须将
ast.literal_eval
与re.findall
一起使用:for t in cells:
temp.extend(map(ast.literal_eval, re.findall(r'-?\d+\.\d{1,2}', t)))
^^^^^^ ^^^^^^^^^^^^^^^^^^^^
见another IDEONE demo