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

标签 python

我是 python 新手,我正在为 ssh 和 sftp 开发一个工具/脚本。我注意到我正在使用的一些代码创建了我认为是字符串数组的内容

channel_data = str()

保存 ssh session 的控制台输出。如果我检查channel_data上的“type”,它会返回为类“str”,

但是如果我执行 for 循环来读取channel_data 中的每个项目,并且channel_data 包含来自 ssh 控制台的 30 行内容

for line in channel_data:
    if "my text" in line:
        found = True

“line”的每次迭代都显示一个字符,就好像 30 行文本的整个 ssh 控制台输出被分解为单个字符数组一样。我在所有文本中都有\n 。

例如,channel_data 将包含“Cisco Nexus 操作系统 (NX-OS) 软件\r\n版权所有 (c) 2002-2016\r\n ..... 等等. 等等..”,但会再次读入我的 for 循环并打印出“C”然后“i”然后“s”等..

我想了解我这里有一个字符数组还是一个由单个字符串字符组成的字符串数组,以及如何在Python中将其转换为基于\n的字符串列表?

最佳答案

您可以像 Python 中的列表一样迭代字符串。所以,是的,正如预期的那样,您的 string 类型 channel_data 实际上会为您提供每个字符。

Python 没有 char 数组。您将得到一个字符串列表,甚至是列表中每个项目的单个字符:

>>> type(['a', 'b'])
<type 'list'>

此外,只是为了在术语使用方面为您自己的知识添加一些额外的信息,Python 中的数组和列表之间存在差异: Python List vs. Array - when to use?

因此,您实际上在这里要做的是获取 channel_data 字符串,并通过调用 split 方法将其设为列表它。

默认情况下,split 方法将仅根据空白字符进行拆分。检查documentation 。因此,您需要确定您实际想要分割的内容,并将该详细信息提供给该方法。

您可以看看splitlines看看这是否适合您。

分割线文档中所指定:

Line breaks are not included in the resulting list unless keepends is given and true.

您的结果将是您期望的字符串列表。因此,作为示例,您可以执行以下操作:

your_new_list_of_str = channel_data.split('\n')

your_new_list_of_str = channel_data.splitlines()

关于python - 无法将 python 类型 str 转换为列表数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43574265/

相关文章:

python - 导入错误 : cannot import name NUMPY_MKL

python - SVG多边形形状的坐标数组

python - python sympy 中产品的期望

python - Scipy inv(A) vs A.I

python - 我如何获得包含一个的numpy数组的索引

python - dict python的URL查询参数

Python/Scipy Kolmogorov-Zurbenko 过滤器?

python - 提取不遵循模式python的数字

python - Pandas:传递的轴数与要绘制的列数不匹配

python - 使用 Index 与 MultiIndex 的 Pandas Dataframe 日期时间切片