如何解决如果变量中存在
我正在使用Python paramiko库远程运行命令并获取输出。但是,在某些服务器上,我也会收到登录消息。我要删除此登录消息:
FILE_OUTPUT = '''
Last login: Mon Nov 9 06:17:39 UTC 2020 from xyz.abc.com on ssh
{'A': {'host_role': 'DB Server'}}
'''
我得到上面的输出。我已经删掉了第二个字典部分。我想从变量中删除第一行。我发现有帖子可以删除文件中的行,但不能删除变量中的行。
预期输出:
{'A': {'host_role': 'DB Server'}}
解决方法
我将找到第一个{
和最后一个}
,然后使用ast
将其转换为字典。我们也可以使用json.loads
,但您必须将单引号替换为双引号。
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('\'','"')))
,
只需遍历行,过滤掉不需要的内容,然后将它们重新粘在一起(或只是将它们保留为行列表)即可。
FILE_OUTPUT = ''.join[line for line in FILE_OUTPUT.splitlines() if not line.startswith('Last login: ')]
,
这很容易做到
RESULT = '\n'.join(FILE_OUTPUT.split('\n')[1:])
这将跳过第一行
如果要将字符串创建为字典,则只需编辑代码
RESULT = dict('\n'.join(FILE_OUTPUT.split('\n')[1:]))
,
import json
FILE_OUTPUT = '''
Last login: Mon Nov 9 06:17:39 UTC 2020 from xyz.abc.com on ssh
{'A': {'host_role': 'DB Server'}}
'''
startjson = [i for i,ele in enumerate(FILE_OUTPUT) if ele == "{"][0] #get index of starting json from string
endjson = [i for i,ele in enumerate(FILE_OUTPUT) if ele == "}"][-1]+1 #get index of ending json from string
data = json.loads(FILE_OUTPUT[startjson:endjson].replace("'",'"')) #need to replace (') as json.loads is recognising json with (")
print(data)
输出:
{'A': {'host_role': 'DB Server'}}
,
许多解决方案都假定第一行需要忽略。但是,问题清楚地表明了它是否存在。
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
输出:
{'A': {'host_role': 'DB Server'}}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。