将字符串(<;0.005)转换为浮点数(0.005)-python 2.7
我有一个列表的样本,我正在迭代,试图找到最大值,只需要数字。我忽略了空白,但是需要改变'你可以使用这个正则表达式来删除不属于数字的字符:将字符串(<;0.005)转换为浮点数(0.005)-python 2.7,python,string,numbers,point,floating,Python,String,Numbers,Point,Floating,我有一个列表的样本,我正在迭代,试图找到最大值,只需要数字。我忽略了空白,但是需要改变'你可以使用这个正则表达式来删除不属于数字的字符: value = re.sub(r'[^0-9.-]', '', value) 当然,它仍然会让像…5或5-5这样的东西通过,但如果你只是想摆脱前导/尾随的废话,正则表达式就完成了它的工作 lst = [[float(re.sub(r'[^0-9.-]', '', x[0]))] for x in lst if x[0].strip()] 您的问题是一个空字
value = re.sub(r'[^0-9.-]', '', value)
当然,它仍然会让像…5
或5-5
这样的东西通过,但如果你只是想摆脱前导/尾随的废话,正则表达式就完成了它的工作
lst = [[float(re.sub(r'[^0-9.-]', '', x[0]))] for x in lst if x[0].strip()]
您的问题是一个空字符串(只有白色字符的字符串),而不是“您可以使用正则表达式删除所有不是数字的字符
import re
def get_num_from_str(in_str):
return re.sub("[^0-9]", "", in_str)
现在,您可以将列表中的所有项目转换为数字您可以使用正则表达式
import re
lst = [['<0.005'],
['<0.005'],
['2.1 '],
['2.1 '],
['1.7 '],
['0.098 '],
[' '],
['1.7 '],
['0.91 '],
['1.2 ']]
def findMax(ilist):
result = 0.0
floatPattern = re.compile('\d+.\d+')
for el in ilist:
myFloat = floatPattern.search(el[0])
if myFloat != None:
if result < float(myFloat.group()):
result = float(myFloat.group())
return result
print findMax(lst)
重新导入
lst=[['第2行跳过空字符串,浮点(lst)永远不会在空字符串上执行。我的意思是“仅由白色字符组成”“…看看你的数据…”!='
@lejlot:是的…它确实如此-但以一种非常疯狂的方式,它将无法获得任何其他值。啊,是的,为了清楚起见,我把那些空白放进去了,它们不是他们的数据,对不起。”
for i in range(0,9):
if lst[i][0].strip() != '':
if lst[i][0] == '<0.005':
lst[i][0] = 0.005
elif float(lst[i][0]) > maxP[i][0]:
maxP[i][0] = lst[i][0]
import re
def get_num_from_str(in_str):
return re.sub("[^0-9]", "", in_str)
import re
lst = [['<0.005'],
['<0.005'],
['2.1 '],
['2.1 '],
['1.7 '],
['0.098 '],
[' '],
['1.7 '],
['0.91 '],
['1.2 ']]
def findMax(ilist):
result = 0.0
floatPattern = re.compile('\d+.\d+')
for el in ilist:
myFloat = floatPattern.search(el[0])
if myFloat != None:
if result < float(myFloat.group()):
result = float(myFloat.group())
return result
print findMax(lst)