【问题标题】:Parsing unformatted string in python在python中解析未格式化的字符串
【发布时间】:2021-09-17 17:50:17
【问题描述】:

我是 python 的新手。能够获取以下格式的数据:-

这里是代码:-

import paramiko
import json
class Remote_SSH:
    def __init__(self,name,command):
        self.name = name
        self.command = command

    def sshcont(self):
        ssh = paramiko.SSHClient()
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh.connect(hostname = self.name, username='root')
        ssh.invoke_shell()
        stdin, stdout, stderr = ssh.exec_command (self.command)
        cmdout = (stdout.read())
        return cmdout
        ssh.close()

    def ssh_print(self):
        list_logs = []
        ssh = paramiko.SSHClient()
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh.connect(hostname = self.name, username='root')
        sftp = ssh.open_sftp()
        stdin, stdout, stderr = ssh.exec_command (self.command)
        for logs in stdout:
            print logs.strip("\n")
            list_logs.append(logs)
        ssh.close()
        return list_logs

kubectl_pods_data = Remote_SSH('IP_ADDRESS','kubectl get pods --namespace prelude').sshcont()
print '----------------------------------------------------------------'
print kubectl_pods_data
print type(kubectl_pods_data)
print '----------------------------------------------------------------'

这是输出

NAME                                           READY   STATUS    RESTARTS   AGE
abx-service-app-78968c4446-dz586               1/1     Running   0          34d
abx-service-app-78968c4446-mn8jz               1/1     Running   0          34d
abx-service-app-78968c4446-rd8xq               1/1     Running   0          34d
approval-service-5c869c44b6-8vxwd              1/1     Running   0          34d
approval-service-5c869c44b6-j6zgr              1/1     Running   0          34d
approval-service-5c869c44b6-nqxv9              1/1     Running   0          34d

<type 'str'>

如果相应的值未运行,我想打印名称列中的值。我尝试将其转换为字典,但无法这样做。如有任何帮助,我们将不胜感激。

【问题讨论】:

  • 请附上您的代码。
  • kubectl_pods_data = Remote_SSH('ip_Address','kubectl get pods --namespace prelude').sshcont() 。这个命令是用来获取数据的,remote_ssh是我写的一个模块ssh到机器上运行命令
  • 请在您的帖子中包含代码,而不是在评论中。
  • 完成,我已经用我的代码更新了问题
  • 所以你的kubectl_pods_data 只是一个字符串,虽然格式很好?

标签: python linux shell kubernetes scripting


【解决方案1】:

您可以轻松地将字符串转换为字符串列表,其中每个子列表代表表中的一行:

lst_data=[x.split() for x in kubectl_pods_data.split('\n')]

此时你可以随意变换这个结构,甚至直接使用它:例如

for row in lst_data:
    if row[2] != 'Running':
        print(row[0])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多