excuses pour le titre, je ne sais pas vraiment comment parler de cette question correctement.
J'ai un script qui tire la configuration de Cisco Commutateurs enregistré sur un fichier .txt et je souhaite extraire des informations clés. Vous trouverez ci-dessous un extrait de ce qui est dans le fichier .txt extrait: p> J'espère extraire les informations suivantes à partir du fichier ci-dessus .txt: p> < ul>
Un exemple de sortie de ce que je suis en espérant: p> et ainsi de suite ... p> ci-dessous est mon code actuel Cependant, sa ne me donne nulle part près de ce que je veux et je suis tout à partir d'idées avec mes connaissances en python limitées: p> Ce retour: p> < Pré> xxx pré> p>
5 Réponses :
Utilisation d'une simple itération.
ex: strong> p> [['interface GigabitEthernet0/0', 'description ** Uplink to C1 **'],
['interface GigabitEthernet0/1',
'description ** Uplink to C2 **',
'channel-group 10 mode auto'],
['interface GigabitEthernet0/2', 'description ** Downlink to NetAuto **'],
['interface GigabitEthernet0/3', 'channel-group 10 mode auto'],
['interface GigabitEthernet1/0'],
['interface GigabitEthernet1/1']]
Essayez:
first_words = {'interface', 'description', 'channel-group'}
res = []
with open('input.txt') as input_f:
d = []
first = True
for i in filter(lambda l: l.strip().split(' ')[0] in {'interface', 'description', 'channel-group'}, input_f):
if 'interface' in i:
first = False if first else res.append(d)
d = []
d.append(i.strip())
Il est très important de bien structurer les données pour une utilisation. Je suggérerais que vous utilisiez un dictionnaire pour stocker les détails de chaque interface. Ainsi, les données extraites du fichier constitueraient une liste de tels dictionnaires. Le code pour la même chose ressemblerait à ce que ceci: Les données seront les suivantes: p>
C'est la solution dont j'avais besoin. Merci un bouquet Vignesh!
Vous pouvez y parvenir avec quelques lignes de code, cette solution a été détaillée est d'autres solutions, mais ce dont vous avez besoin en fait consiste à Vous pouvez trouver plus d'informations là-bas: p> Si ce dont vous avez besoin n'est qu'une solution de contournement rapide, vous pouvez faire comme ça: p>
la solution de contournement h3>
Je vais examiner cela un peu plus. Merci olinox14
Gardez-le simple - divisez le fichier texte en lignes, divisez la ligne en mots, cochez le premier mot figure dans la liste des mots qui vous intéressent.
interface Port-channel10 interface GigabitEthernet0/0 description ** Uplink to C1 ** interface GigabitEthernet0/1 description ** Uplink to C2 ** channel-group 10 mode auto interface GigabitEthernet0/2 description ** Downlink to NetAuto ** interface GigabitEthernet0/3 channel-group 10 mode auto interface GigabitEthernet1/0 interface GigabitEthernet1/1
Je reçois une erreur: Imprimer (mots_in_line [0]) IndexError: index de liste hors de portée
Peut-être qu'il y a des lignes vides dans votre fichier, auquel cas mots_in_line code> sera vide. Je mettrai à jour la réponse pour traiter ce scénario.
S'il vous plaît dites-nous ce qui ne va pas avec les résultats de votre code - votre description est extrêmement vague. Veuillez vous rappeler Comment créer un exemple minimal, complet et vérifiable et suivez-le.
Voulez-vous qu'ils sont stockées dans des listes séparées ou juste une seule liste?
Listes séparées idéalement