我有一个二维数组,当逐行打印时,它看起来像这样:
labStorageArray = []
for line in labStorageShort.splitlines():
labStorageArray.append(line.strip().split(' '));
for row in labStorageArray:
print row
['random1', '4.75M']
['random2', '4.8G']
我想将每行的第二个元素(显然是存储大小)转换为浮点数,以便我可以将所有值转换为 TB。 有没有一种简单的方法可以做到这一点并将数据保留在同一数组中以便以后打印?
from string import ascii_letters
s='4.75M'
print(float(s.rstrip(ascii_letters))
4.75
如果只有一个结束字符要删除,并且始终要删除:
print(float(s[:-1])))
4.75
假设浮点数始终是最后一个元素:
for line in labStorageShort.splitlines():
spl = line.rstrip().split()
letter, flt = spl[-1][-1], float(spl[-1][:-1]) # if there are possibly nums without a letter use rstrip
# do calculation here if preferable
# flt = flt / 1024 if letter == "G" else flt
labStorageArray.append(spl[0],flt)
假设数字总是以M
或G
结尾;如果根本没有后缀的可能性,逻辑就会变得更加复杂。
multiplier = {'M': 1048576, 'G': 1073741824} # or 1000000 and 1000000000, your choice
for row in labStorageArray:
number, suffix = row[1][:-1], row[1][-1]
number = float(number) * multiplier[suffix]
row[1] = number
结果:
[['random1', 4980736.0], ['random2', 5153960755.2]]