需要用于此逻辑的shell/python脚本

需要用于此逻辑的shell/python脚本,python,shell,Python,Shell,我试图为以下逻辑编写一个shell/python hack: 我有一个文件,其中包含14-15位长的IMEI列表 例:- 我需要检查文件中上述每一行的前8位数字,并将它们归类为一个模型 例如: 123456872932343-->前8位数字12345687将表示某一型号,如“model-X” 我需要遍历这个列表来分析前8位数字,将其归类为一个模型,然后如果列表中重复了8位数字,那么需要增加模型的计数 有人能在这方面提供帮助吗。以下代码对您有用吗 #!/bin/python dict_model

我试图为以下逻辑编写一个shell/python hack:

  • 我有一个文件,其中包含14-15位长的IMEI列表

    例:-

  • 我需要检查文件中上述每一行的前8位数字,并将它们归类为一个模型

    例如:

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

  • 我需要遍历这个列表来分析前8位数字,将其归类为一个模型,然后如果列表中重复了8位数字,那么需要增加模型的计数


  • 有人能在这方面提供帮助吗。

    以下代码对您有用吗

    #!/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)
    

    您可以在检查前8位数字的dict中计算这些数字:

    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}
    
    请尝试以下伪代码:

    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 }
    

    到目前为止,您尝试了什么?这听起来像是一项工作,用于
    sed
    (收集前8位)和
    sort
    (将重复分组在一起)以及
    uniq-c
    计算每个型号的重复次数。有什么问题吗?伊隆,又是你,还是只是我对泰斯拉的想法太多了3感谢Vinu先生的快速回复。我也尝试过类似的方法。我意识到问题在于,包含到模型编号的IMEI映射的字典并不是详尽无遗的,因此我最终得到了很多到未知模型的IMEI映射。故障在我这边。谢谢你的代码。谢谢,我遇到的问题之一是将IMEI转换成相应的制造商。IMEI-TAC()的wiki页面没有给出TAC到操作符映射的详尽列表,在这里我的很多标记都被放入了一个未知的bucket中。
    imei_count = {k:len(imei_dict[k]) for k in imei_dict }