从用户获取文件名并将数字转换为列表

时间:2013-10-28 19:26:28

标签: python-3.x

到目前为止,我有这个:

def main():
        bad_filename = True
        l =[]
        while bad_filename == True:
            try:
                filename = input("Enter the filename: ")
                fp = open(filename, "r")
                for f_line in fp:
                    a=(f_line)
                    b=(f_line.strip('\n'))
                    l.append(b)
                    print (l) 
                bad_filename = False
            except IOError:
                print("Error: The file was not found: ", filename)




main()

这是我的程序,当我打印这个我得到的

['1,2,3,4,5']
['1,2,3,4,5', '6,7,8,9,0']
['1,2,3,4,5', '6,7,8,9,0', '1.10,2.20,3.30,0.10,0.30']

但我需要得到

[1,2,3,4,5]
[6,7,8,9,0.00]
[1.10,2.20,3.3.0,0.10,0.30]

1 个答案:

答案 0 :(得分:0)

文件的每一行都是用逗号分隔的数字系列,但对于python,它们只是字符。您还需要一个转换步骤才能将字符串放入列表中。首先在逗号上拆分以创建字符串列表,每个字符串都是一个数字。然后使用所谓的“列表理解”(或for循环)将每个字符串转换为数字:

b = f_line.strip('\n').split(',')
c = [float(v) for v in b]
l.append(c)

如果你真的想在每次循环中重置列表(你想要的输出只显示最后一行),那么只需将数字列表分配给l,而不是附加:

b = f_line.strip('\n').split(',')
l = [float(v) for v in b]

列表理解是一种简短的说法:

l = []
for v in b:
    l.append(float(v))

aa的分配不需要b或额外的括号。