如何从输入文件输出值的所有索引

时间:2017-10-16 22:22:52

标签: python csv

我试图找到输入文件中值的所有索引。程序将接受要搜索的编号作为第一个命令行参数,并将输入文件的名称作为第二个参数。我无法输出从以下代码中找到值的索引:

import sys

value = sys.argv[1]
file_name = sys.argv[2]
file = open(file_name, 'r')

print('The value of file \"{}\" to be searched:\n{}'.format(file_name, value))

for line in file.readlines():
    curr_arr = []
    for i in line.split(','):
        curr_arr +=[int(i)]

def find_values(curr_arr, val):
    found_indexes = []
    sum = 0
    for n in range(len(curr_arr)):
        sum += curr_arr[n]
        if curr_arr[n] == val:
            found_indexes += [n]
        sum = sum + 1
    return found_indexes

print 'The index(s) of the occurrence of {} in {}: {}'.format(value, curr_arr, find_values(curr_arr, value))

这就是我得到的:

a1.py 7 text.csv
The value of file "text.csv" to be searched:
7
The index(s) of the occurrence of 7 in [2, 3, 7, 9, 7, 3, 2]:

我应该得到[2,4],但它没有返回。任何人都可以帮我代码吗?谢谢

1 个答案:

答案 0 :(得分:0)

您的value目前是一个字符串。您应该转换为int,以便与数组中的项目进行比较,对于匹配的项目,可以True进行比较:

value = int(sys.argv[1])

否则,if curr_arr[n] == val: ...始终为Falsefound_indices列表仍为空。

此外,您可以使用enumerate更优雅地构建列表,以便在列表理解中的项目旁边生成索引。

found_indices = [i for i, x in curr_arr if x == value]