python 如何在 \r 上替换或拆分字符串列表中的行

python how to replace or split on \r for lines from string list

我在 paramiko ssh 会话中有几行类似于下面的输出。我首先根据 \n 进行拆分,并将每一行存储在一个列表中。所以整个 ssh 会话作为一个完整的字符串出现,因此我根据 \n 进行拆分。但是这里有 \r,见下文。如果我尝试在 \r 上再次拆分,它会失败,因为我已经有了一个列表。

|\r/\r-\r\r\\r|\r/\r[2K\r00:31:43 - Executing system_health v107

如果我将文本粘贴到记事本++中,\r 看起来像 returns 或换行。

'|

/

-

\

|

/

[2K

00:31:43 - Executing system_health v107'

我怎样才能让在 Python 中读取的每一行都与这一行相似

|\r/\r-\r\r\\r|\r/\r[2K\r00:31:43 - Executing system_health v107

并进一步 split/slice 到另一个列表中的行?或其他一些方法。最终目标是删除 \n\r 并将每一行作为列表中的一行。然后我可以删除不需要的。

如果你有一个字符串列表,你所要做的就是遍历列表,处理每个字符串。在这种情况下,您似乎想要另一个结果列表。鉴于您提供的数据最少。

>>> a=["|\r/\r-\r\r\\r|\r/\r[2K\r00:31:43 - Executing system_health v107","|\r/\r-\r\r\\r|\r/\r[2K\r00:31:44 - Executing system_health v108"]
>>> b=[]
>>> for i in a:
...     x = i.split('[2K\r')
...     b.append(x[-1])
... 
>>> b
['00:31:43 - Executing system_health v107', '00:31:44 - Executing system_health v108']

for i in a: 循环中,您可以根据需要采取尽可能多的步骤来操作数据,然后再将其附加到新列表 (b) 注意:我假设每个字符串在时间戳之前都是 [2K\r,这可能不一定是这种情况,但主体保持不变。