簡體   English   中英

Python:打印彩色字符串無法正常工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM