我想在打印這個列表時刪除註釋。解析python中的字符串列表
我使用
output = self.cluster.execCmdVerify('cat /opt/tpd/node_test/unit_test_list')
for item in output:
print item
這是完美的給我整個文件,但我怎麼會在打印時刪除評論?
我必須使用cat來獲取文件,因爲它位於何處。
我想在打印這個列表時刪除註釋。解析python中的字符串列表
我使用
output = self.cluster.execCmdVerify('cat /opt/tpd/node_test/unit_test_list')
for item in output:
print item
這是完美的給我整個文件,但我怎麼會在打印時刪除評論?
我必須使用cat來獲取文件,因爲它位於何處。
功能self.cluster.execCmdVerify
顯然返回iterable
,所以你可以簡單地這樣做:
import re
def remove_comments(line):
"""Return empty string if line begins with #."""
return re.sub(re.compile("#.*?\n") ,"" ,line)
return line
data = self.cluster.execCmdVerify('cat /opt/tpd/node_test/unit_test_list')
for line in data:
print remove_comments(line)
下面的例子是一個字符串輸出:
要靈活,你可以創建一個文件對象的字符串(只要它是一個字符串)
from cStringIO import StringIO
import re
def remove_comments(line):
"""Return empty string if line begins with #."""
return re.sub(re.compile("#.*?\n") ,"" ,line)
return line
data = self.cluster.execCmdVerify('cat /opt/tpd/node_test/unit_test_list')
data_file = StringIO(data)
while True:
line = data_file.read()
print remove_comments(line)
if len(line) == 0:
break
或者只是使用在for-loop
。
您可以使用正則表達式re
模塊來識別註釋,然後刪除它們或在腳本中忽略它們。
什麼greping
grep -v '#' /opt/tpd/node_test/unit_test_list
如果它是例如Python文件和要刪除#開始的行輸出,你可以嘗試:
cat yourfile | grep -v '#'
編輯:
如果你不需要貓,你可以直接做:
grep -v "#" yourfile
它只適用於位於服務器上的文本文件。 –
爲什麼在直接使用grep時使用cat ?,我猜Alan什麼時候說他需要使用cat,他意味着他不能直接使用python打開文件,但是可以使用其他命令 –
這是正確的,我可以使用其他命令來執行此操作嗎? –
由於我們的測試框架,我們的系統與多個節點聚集在一起,所以這種方式並不能很好地工作,所以我無法登陸Python中的正確節點。 –
好吧,我編輯了處理輸出文件的代碼。 – tamasgal
我用這個買了我得到了這個: –