Python 将字符串转换为浮点

Python 将字符串转换为浮点,python,python-2.7,Python,Python 2.7,我正试图编写一个程序来计算文件中的值。例如,给我一个文件,上面有这样的数字 2222一线 4444二线 1111第三线 我的程序接收输入文件的名称,例如file.txt,以及要计数的数字列。例如,如果my file.txt包含上面的数字,并且我需要第2列的总和,那么我的函数应该能够打印出72+4+1 t1 = open(argv[1], "r") number = argv[2] k = 0 while True: n = int(number) t = t1.readline()

我正试图编写一个程序来计算文件中的值。例如,给我一个文件,上面有这样的数字

2222一线

4444二线

1111第三线

我的程序接收输入文件的名称,例如file.txt,以及要计数的数字列。例如,如果my file.txt包含上面的数字,并且我需要第2列的总和,那么我的函数应该能够打印出72+4+1

t1 = open(argv[1], "r")
number = argv[2]
k = 0

while True:
   n = int(number)
   t = t1.readline()
   z = list(t)

   if t == "":
       break

   k += float(z[n])

t1.close()
print k
当我将第一列设置为0时,此代码适用于第一列,但当我将其设置为1时,它不会返回一致的结果,即使它们应该是相同的答案


有什么想法吗

一个更加丑陋的实现,展示了zip的酷元素:

zip*iterable可从行翻转到列,因此:

iterable = ['aaa','bbb','ccc','ddd']
zip(*iterable) == ['abcd','abcd','abcd'] # kind of...
zip对象是不可下标的,所以在下标[colnum]之前,我们需要将其转换为list。或者,我们可以:

    ...
    for _ in range(colnum-1):
        next(columns) # skip the columns we don't need
    return sum([int(num) for num in next(columns)])
或者只是计算所有的总和,然后得到我们需要的总和

    ...
    col_sums = [sum(int(num) for num in column) for column in columns]
    return col_sums[colnum]

如果输入0有效,我看不出为什么1不会,您尝试过什么调试?它对我有效。看不出有任何问题。1会带来什么?请注意,您永远不需要浮点精度。k+=floatz[n]与k+=intz[n]完全相等,因为您只获得一个字符,例如一个整数值的数据。
    ...
    col_sums = [sum(int(num) for num in column) for column in columns]
    return col_sums[colnum]