我有一个简单的python脚本来读取文件并逐行打印,其中注释(以#
开头的行)以颜色打印
cat file.txt
# asdf
1234
我的python代码:
for ln in file
if COMMENT.match(ln):
print "%s%s%s" % (' 33[01;32m', ln, ' 33[0m'),
else:
print ln,
现在,奇怪的是,虽然正则表达式匹配和着色本身工作得很好,但print
的行为方式,我无法解释。这就是打印出来的内容:
# asdf
1234
第一行被打印为绿色,但请注意下一行的一个额外的空格字符,添加在1234
前面。
这些多余的空间是从哪里来的,我怎么才能去掉它?
为了完整起见,下面是我在代码片段中使用的re.compile
表达式。但这似乎工作得很好。
COMMENT = re.compile(r'^#.*$')
作为旁注:
我是否选择了正确的着色方法?还是有更好的方法?
您的行包含一个换行符,但是您使用print
和,
来防止print
添加额外的换行符。然而,,
添加了一个空格,所以最后每次打印linen<space>
,在下一个之前插入一个空格。
不使用,
,从ln
中删除换行符,并让print
添加一个:
for ln in file:
ln = ln.rstrip('n')
if COMMENT.match(ln):
print "%s%s%s" % (' 33[01;32m', ln, ' 33[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" % (' 33[01;32m', line, ' 33[0m')
else:
print line