[英]python: printing colored string not working properly
我有簡單的python腳本來讀取文件並逐行打印,其中注釋(以#
開頭的行)以彩色打印
cat file.txt
# asdf
1234
我的python代碼:
for ln in file
if COMMENT.match(ln):
print "%s%s%s" % ('\033[01;32m', ln, '\033[0m'),
else:
print ln,
現在,奇怪的是,盡管正則表達式匹配和着色本身可以正常工作,但print
卻有一定的表現,我無法解釋。 這是打印出來的內容:
# asdf
1234
第一行打印為綠色,但是請注意,在下一行的1234
前面添加了一個空格。 每當上一行被着色時,都會添加此額外的空間。
這個多余的空間從哪里來,我如何擺脫它?
為了完整起見,這里是我的re.compile
我使用的代碼片段其中expresssion。 但這似乎很好。
COMMENT = re.compile(r'^#.*$')
附帶說明:
我是否已選擇正確的着色線方法。 還是有更好的方法呢?
您的行包含換行符,但是您將print
與一起使用,
以防止print
添加額外的換行符。 然而, ,
增加了一個空間 ,而不是,所以最后打印line\\n<space>
每次插入之前的下一個空格。
而不是使用,
而是從ln
刪除換行符,並在print
添加一個:
for ln in file:
ln = ln.rstrip('\n')
if COMMENT.match(ln):
print "%s%s%s" % ('\033[01;32m', ln, '\033[0m')
else:
print ln
對於此簡單的工作,無需使用regex
。 您可以使用str.startswith
嘗試這個:
with open("yourFile") as file:
for line in file:
line = line.rstrip("\n")
if line.startswith("#"):
print "%s%s%s" % ('\033[01;32m', line, '\033[0m')
else:
print line
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.