需要此逻辑的shell / python脚本

时间:2019-03-14 07:15:56

标签: python shell

我正在尝试将shell / python黑客归为以下逻辑:

  1. 我有一个文件,其中包含14-15位数字的IMEI列表。

    例如:-

    123456872932343
    82342512435234
    230098234242342
    82341436242422
    
  2. 我需要检查文件中上述每行的前8位,并将它们分类为模型。

    例如:-

    123456872932343->前8位数字12345687将表示某个型号,例如“ Model-X”

  3. 我需要遍历此列表以分析前8位数字,将其分类为模型,然后如果列表中重复8位数字,则需要增加模型计数。

在这方面有人可以帮忙吗?

3 个答案:

答案 0 :(得分:2)

以下代码对您有用吗?

#!/bin/python
dict_model = {  'model-X': '12345687',
                'model-Y': '98765432'}
count_model = {  'model-X': 0,
                'model-Y': 0}
imei_list = ['123456872932343', '123456876846461', '123456876846462', '987654326846461', '987654326846462']

for x in imei_list:
    for model in dict_model:
        if dict_model[model] == x[0:8]:
            count_model[model]+=1

print(count_model)

答案 1 :(得分:0)

您可以在字典中检查前8位数字:

list_of_numbers=["1111111111","5454545454","1111111111","4545454545","1111111111","4545454545","6666666666"]
counts={}
for i in list_of_numbers:    
    counts[i[:8]]=counts.get(i[:8],0)+1
print(counts)

输出:

{'111111111': 3, '545454545': 1, '454545454': 2, '666666666': 1}

答案 2 :(得分:0)

尝试使用此伪代码:

file = open(path/to/textfile , 'r')
imeis = [i.strip() for i in file.readlines()]
models = [model_int1 , model_int2, ...]
imei_dict = {}
for j in models:
    temp = []
    for i in imeis:
        if int(i[:8]) == j:
            temp.append(i)            
    imei_dict[j] = temp

输出应为:

imei_dict = {model_int1 : [list of all imei with that model] , model_int2 : [...]}

如果要获取某些型号对应的imei号,请尝试以下操作:

imei_count = {k:len(imei_dict[k]) for k in imei_dict }