繁体   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