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