无法将python类型str转换为列表数组

时间:2017-04-23 17:23:36

标签: python

我是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的字符串列表?

2 个答案:

答案 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

上的文档