Clé cachée dans un nom fichier crypté
Bonjour,
j'ai des données de type csv avec des noms qui sont cryptés selon le modèle comme suit :
xx_IP23_AA_BB_CC_DD_EE_FF_GG_HH_II_JJ_KK_LL_MM.csv“.
Chaque couple ( AA , BB etc..) est une potentielle clé pour un paramètre bien precis . Dans mon cas, je recherche la position de la clé d'un seul paramètre , appellons le "Recherché", qui me pemettra de retrouver les abreviations de tous les données en rapport avec le paramètre en question , car ils sont tous même index dans les differents fichiers . Par exemple si la clé pour mon paramètre "Recherché" est AA , toutes abreviation dans les noms des fichiers a l'index(position) 9 et 10 seront les données de mon paramètre "Recherché".
voici l'exemple le nom d'un fichier :
xx_IP23_FA_5Z_6g_Fu_8k_32_Rq_V7_mj_Ao_B9_rj_yw.csv
Pouvez vous écrire un code qui me pemettra de trouver la la position clé de mon paramètre "Recherché"?
Merci
Windows / Edge 114.0.1823.43
- Clé cachée dans un nom fichier crypté
- Fichier bin - Guide
- Clé usb non détectée - Guide
- Clé windows 8 - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
3 réponses
As-tu déjà essayé quelque chose? As-tu pensé à str.index() ou str.find() ?
Ou encore str.replace() ?
Bonjour,
Personnellement je n'ai pas compris ce que tu cherches à faire... probablement parce que l'exemple ne détaille ni le contenu du fichier csv, ni ce qu'il faut en faire.
De plus, comme le dit Pierrot, voir ce que tu as commencé à coder nous permettrait de mieux comprendre ce que tu cherches à faire.
Bonne chance
Bonjour,
Si j'ai bien compris, la recherche doit porter sur le nom du fichier csv et pas son contenu.
Si je recherche "6g" dans le deuxième exemple, ça doit me retourner 15-16.
Ce que l'histoire ne dit pas, c'est s'il peut y avoir dans le même répertoire plusieurs fichiers csv objets de la recherche et si elle doit toujours comporter 2 caractères (donc excluant toujours IP23 ou analogues).
Moyennant quoi la solution est simple en Batch, mais la question est posée pour Python, je botte en touche.
Bonjour,
En admettant que l'interprétation de Brucine #4 soit correcte, on pourrait écrire quelque chose dans ce genre :
def split_keys(s: str) -> dict: d = dict() i = 0 for (j, a) in enumerate(s): if a in {"_", "."}: key = s[i:j] ij = (i, j) i = j + 1 if len(key) != 2: continue d[key] = ij if a == ".": break return d s = "xx_IP23_FA_5Z_6g_Fu_8k_32_Rq_V7_mj_Ao_B9_rj_yw.csv" d = split_keys(s) print(d.get("FA")) # (8, 10)
On peut vérifier que le dictionnaire d contient bien des "clés" de longueur 2
print(d) # {'xx': (0, 2), # 'FA': (8, 10), # '5Z': (11, 13), # '6g': (14, 16), # 'Fu': (17, 19), # '8k': (20, 22), # '32': (23, 25), # 'Rq': (26, 28), # 'V7': (29, 31), # 'mj': (32, 34), # 'Ao': (35, 37), # 'B9': (38, 40), # 'rj': (41, 43), # 'yw': (44, 46)}
... et que ces indices sont corrects :
def test_split_keys(s: str): d = split_keys(s) for (key, (i, j)) in d.items(): assert s[i:j] == key test_split_keys(s)
Bonne chance
Oui, mais j'y suis pas arrivé