我需要比较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,但它没有工作。 我可以遵循任何方法吗?
答案 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