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