Python 如何搜索字符串并输出字符串的前3行
我目前正在尝试从网络设备读取show命令,只获取show命令的前3行并存储它们,以防在此脚本期间发生什么情况,并将它们视为回滚对象 我一辈子都不知道如何搜索一个大字符串的输入,只输出前三行,而忽略其他所有内容 *编辑*2*希望更容易阅读Python 如何搜索字符串并输出字符串的前3行,python,Python,我目前正在尝试从网络设备读取show命令,只获取show命令的前3行并存储它们,以防在此脚本期间发生什么情况,并将它们视为回滚对象 我一辈子都不知道如何搜索一个大字符串的输入,只输出前三行,而忽略其他所有内容 *编辑*2*希望更容易阅读 gig1 = '''interface GigabitEthernet0/1 description bandwidth ip address x.x.x.x x.x.x.x ip access-group xxx in ip nbar protocol-dis
gig1 = '''interface GigabitEthernet0/1
description
bandwidth
ip address x.x.x.x x.x.x.x
ip access-group xxx in
ip nbar protocol-discovery
ip flow monitor input
ip flow monitor output
ip flow egress
duplex auto
speed auto
service-policy output QOS-PARENT-OUT
'''
class Comparison():
def CurrentConfig(interface):
cmd = '{} '.format(interface)
print(cmd)
split_str = cmd.split('\n')
first_3_lines = split_str[:3]
return (first_3_lines)
if __name__ == '__main__':
config = { 'interfaces': gig1 }
interface = config['interfaces']
output_list = []output = Comparison.CurrentConfig(interface)
output_list.append(output)
currentconfig = output
print(currentconfig)
输出:
['interface GigabitEthernet0/1','description','bandwidth']
但是,我希望输出不是列表格式,是否在此处添加.format(currentconfig)命令?以下代码将返回多行字符串的前三行:
test\u str=''这是第1行
这是2号线
这是3号线
其他一些线路
更多线路
废话废话
最后一行
'''
split\u str=test\u str.split('\n')
第一条线=分割线[:3]
如果这样做没有帮助,我建议你做一个简单的代码示例来说明你遇到的问题,因为上面的代码片段很长,并且有很多与你所说的问题无关的部分 欢迎来到StackOverflow。不过,你的问题很不清楚。所有这些代码与“只输出前三行而忽略其他所有内容”有什么关系?如果打印字符串,是否只需要打印前三行?您显示的“输出”是什么(代码中不包括print语句)?请通过阅读和以下内容进行澄清。我只想获得并保留以下信息:接口GigabitEthernet0/1说明带宽我从输出中获得的所有其他信息,我可以不太关心,因为这只是对上述内容进行更改。你没有回答我的大多数问题。我建议您编辑您的问题以处理我提出的问题,这将澄清您的问题,并使您更有可能获得好的答案。因此,我感到困惑,因为我对python流不熟悉,我不理解为什么我提取的信息被用作列表,因为执行新的python脚本与从设备获取信息的方式不同。所以我不知道如何让别人更容易阅读。@RoryDaulton是正确的。试着磨练你需要帮助的部分。这就是说,假设您显示的输出始终具有相同的模式,您可能会在必要时(即暂时)尝试将最后的
print
语句替换为以下内容:print(currentconfig.partition('\n ip address')[0])
。欢迎使用StackOverflow。谢谢,我使用了您的输入,但将[:3]更改为[:4],因为Cisco添加了一个空字符,但在我的示例inte中,它唯一的输出是这样的