qwweeeit wrote:
Hi all,
from a string embedding tabs I want to colorize them when expanded:
# Starting from a string:
a= '1234\t5678\t\t90\nqwerty\nasdfg'
# which embeds both tabs and lfs
# printing it you obtain:
print a
# 1234 5678 90
# qwerty
# asdfg
# print automatically expands tabs and interprets the NL.
# to colorize the expanded tabs, I tried:
print a.replace('\t',"\033[41m\t\033[0m") # 41 = red color
# instead it works (in Linux) for the \n (substituted with a red
space):
print a.replace('\n',"\033[41m \033[0m\n")
Can you help me?
Bye.
If all else fails you can colorize the tabs after converting them to
spaces:
def splititer(text, token):
# A lazy iter(text.split(token)).
# Probably not worth the effort.
start = 0
while True:
try:
end = text.index(token, start)
except ValueError:
break
yield text[start:end]
start = end + len(token)
yield text[start:]
def colortabs(text, tabcolor, normcolor, tabwidth=8):
parts = splititer(text, "\t")
part = parts.next()
pos = len(part)
yield part
for part in parts:
width = tabwidth - pos % tabwidth
yield tabcolor
yield " " * width
yield normcolor
yield part
pos += width + len(part)
print "\t1234\t5678\t\t90".replace("\t", "\033[41m\t\033[0m")
print "".join(colortabs("\t1234\t5678\t\t90", "\033[41m", "\033[0m"))
Peter