我是python的新手,我正在为ssh和sftp开发工具/脚本。我注意到我正在使用的一些代码创建了我认为是字符串数组
channel_data = str()
从ssh会话中保存控制台输出。如果我在channel_data上检查“type”,它会返回类'str',
但是如果我执行循环来读取channel_data中的每个项目,并且channel_data包含来自ssh控制台的30行
for line in channel_data:
if "my text" in line:
found = True
“line”的每次迭代都显示一个字符,就好像30行文本的整个ssh控制台输出被分解为单个字符数组一样。我确实在所有文本中都有。
例如channel_data将包含“Cisco Nexus操作系统(NX-OS)软件\ r \ n版权所有(c)2002-2016 \ r \ n .....等等。”,但再次将读入我的循环并打印出“C”然后“i”然后“s”等。
我试图理解我在这里有一个char数组还是一个字符串数组,它由单个字符串字符组成,以及如何在Python中将它转换为基于\ n的字符串列表?
答案 0 :(得分:2)
您可以像Python中的列表一样迭代字符串。所以,是的,正如预期的那样, string 类型channel_data
实际上会为您提供每个角色。
Python没有char数组。您将拥有一个字符串列表,即使是列表中每个项目的单个字符:
>>> type(['a', 'b'])
<type 'list'>
另外,为了在使用术语时为自己的知识添加一些额外信息, 是Python中数组和列表之间的区别:Python List vs. Array - when to use? < / p>
所以,你实际上要做的是取channel_data
字符串,并通过调用 split 方法将其设为列表。< / p>
默认情况下,split
方法仅分割为空格字符。检查documentation。因此,您需要确保要实际拆分的内容并将该详细信息提供给方法。
您可以查看splitlines,看看它是否适合您。
正如splitlines
的文档中所述:
除非keepends是,否则换行符不包括在结果列表中 给予和真实。
您的结果将是您期望的字符串列表。因此,作为一个例子,你可以这样做:
your_new_list_of_str = channel_data.split('\n')
或
your_new_list_of_str = channel_data.splitlines()
答案 1 :(得分:0)
string_list = channel_data.splitlines()
请参阅https://docs.python.org/3.6/library/stdtypes.html#str.splitlines