忽略python字符串中的制表符和空格

时间:2017-08-28 18:48:32

标签: python excel python-2.7 whitespace

我需要比较python中的两个字符串,第一个字符串是从.xlsx文件中读取的,第二个是来自stdout.readlines()的输出。

下面的代码是获取命令输出。

stdin, stdout, stderr = client.exec_command(testCommand)
op = stdout.readlines()
print("op =\n"+str(op))
str1 = "".join(op)

由于某些命令输出以\ t开头,或者可能介于\ t之间。

对于Eg:在命令输出下面以\ t开头,在LEN之后有\ t。

#   PASS_MIN_LEN    Minimum acceptable password length.
PASS_MIN_LEN    5

xlsx文件正在

# PASS_MIN_LEN Minimum acceptable password length.
PASS_MIN_LEN 5

由于.xlsx比较字符串没有\ t,如何在比较两个字符串时忽略\ t。

if cmdOutput== xlsxOutput:

无效。

我试图用\ t修剪cmdOutput,但它没有工作。 我可以遵循任何方法吗?

3 个答案:

答案 0 :(得分:1)

如果您只想用空格替换制表符,则str.replace可能很简单。但这并不会留下尾随的新行。您可以考虑替换后跟str.strip。例如:

op = [x.replace('\t', ' ').strip() for x in op]
print(op)

['# PASS_MIN_LEN Minimum acceptable password length.', 'PASS_MIN_LEN 5']

如果您有其他类型的字符或多个字符(缺少数据等),可以考虑采用re gex的更积极的方法:

import re
op = [x for x in map(lambda x: re.sub('\s+', ' ', x).strip(), op)]
print(op) 

['# PASS_MIN_LEN Minimum acceptable password length.', 'PASS_MIN_LEN 5']

答案 1 :(得分:0)

您可以使用空格替换命令输出字符串中的选项卡。

例如:

cmdOutput.replace('\t', ' ') == xlsxOutput

答案 2 :(得分:0)

在官方python文档中阅读strip() method的描述。

“返回删除了前导和尾随字符的字符串副本。”

因此,字符串中的字符保持不变。使用replace()方法是解决问题的最佳方法。

>>> str1 = "PASS_MIN_LEN\t5"
>>> str2 = "PASS_MIN_LEN 5"
>>> str1.replace('\t', ' ') == str2
True