J'utilise la bibliothèque Python paramiko pour exécuter une commande à distance et obtenir la sortie. Cependant, sur certains serveurs, je reçois également un message de connexion. Je souhaite supprimer ce message de connexion:
{'A': {'host_role': 'DB Server'}}
J'obtiens la sortie ci-dessus. J'ai tronqué la deuxième partie du dictionnaire. Je veux supprimer la première ligne si elle existe de la variable. J'ai trouvé des messages pour supprimer des lignes d'un fichier, mais pas d'une variable.
Production attendue:
FILE_OUTPUT = ''' Last login: Mon Nov 9 06:17:39 UTC 2020 from xyz.abc.com on ssh {'A': {'host_role': 'DB Server'}} '''
5 Réponses :
Cela pourrait être fait facilement
RESULT = dict('\n'.join(FILE_OUTPUT.split('\n')[1:]))
Cela sautera la première ligne
Si vous souhaitez créer la chaîne dans un dictionnaire, vous pouvez simplement modifier le code
RESULT = '\n'.join(FILE_OUTPUT.split('\n')[1:])
Je vais trouver le premier {
et le dernier }
et utiliser ast
pour le ast
en dictionnaire. Nous pouvons également utiliser json.loads
mais vous devrez remplacer les guillemets simples par des guillemets doubles.
import ast if '{' in FILE_OUTPUT: first = FILE_OUTPUT.find('{') last = FILE_OUTPUT.rfind('}') + 1 results = ast.literal_eval(FILE_OUTPUT[first:last]) print(results) # {'A': {'host_role': 'DB Server'} # using json instead of ast.literal_eval # assuming `import json` results = FILE_OUTPUT[first:last] print(json.loads(results.replace('\'','"')))
Faites une boucle sur les lignes, en filtrant les éléments que vous ne voulez pas, puis recollez-les (ou conservez-les simplement sous forme de liste de lignes).
FILE_OUTPUT = ''.join[line for line in FILE_OUTPUT.splitlines() if not line.startswith('Last login: ')]
{'A': {'host_role': 'DB Server'}}
Beaucoup de solutions supposaient que la première ligne devait être ignorée. Cependant, la question dit clairement si elle existe.
{'A': {'host_role': 'DB Server'}}
Production:
FILE_OUTPUT = ''' Last login: Mon Nov 9 06:17:39 UTC 2020 from xyz.abc.com on ssh {'A': {'host_role': 'DB Server'}} ''' for i in FILE_OUTPUT.splitlines(): if not "Last login" in i: print i