Each Answer to this Q is separated by one/two green lines.
What should I do to make the text “hello” bold?
class color: PURPLE = '\033[95m' CYAN = '\033[96m' DARKCYAN = '\033[36m' BLUE = '\033[94m' GREEN = '\033[92m' YELLOW = '\033[93m' RED = '\033[91m' BOLD = '\033[1m' UNDERLINE = '\033[4m' END = '\033[0m' print(color.BOLD + 'Hello World !' + color.END)
print '\033[1m' + 'Hello'
And to change back to normal:
This page is a good reference for printing in colors and font-weights. Go to the section that says ‘Set graphics mode:’
And note this won’t work on all operating systems but you don’t need any modules.
You can use termcolor for this:
sudo pip install termcolor
To print a colored bold:
from termcolor import colored print(colored('Hello', 'green', attrs=['bold']))
For more information, see termcolor on PyPi.
simple-colors is another package with similar syntax:
from simple_colors import * print(green('Hello', ['bold'])
The equivalent in colorama may be
In straight-up computer programming, there is no such thing as “printing bold text”. Let’s back up a bit and understand that your text is a string of bytes and bytes are just bundles of bits. To the computer, here’s your “hello” text, in binary.
Each one or zero is a bit. Every eight bits is a byte. Every byte is, in a string like that in Python 2.x, one letter/number/punctuation item (called a character). So for example:
01101000 01100101 01101100 01101100 01101111 h e l l o
The computer translates those bits into letters, but in a traditional string (called an ASCII string), there is nothing to indicate bold text. In a Unicode string, which works a little differently, the computer can support international language characters, like Chinese ones, but again, there’s nothing to say that some text is bold and some text is not. There’s also no explicit font, text size, etc.
In the case of printing HTML, you’re still outputting a string. But the computer program reading that string (a web browser) is programmed to interpret text like
this is <b>bold</b> as “this is bold” when it converts your string of letters into pixels on the screen. If all text were WYSIWYG, the need for HTML itself would be mitigated — you would just select text in your editor and bold it instead of typing out the HTML.
Other programs use different systems — a lot of answers explained a completely different system for printing bold text on terminals. I’m glad you found out how to do what you want to do, but at some point, you’ll want to understand how strings and memory work.
This depends if you’re using linux/unix:
>>> start = "\033[1m" >>> end = "\033[0;0m" >>> print "The" + start + "text" + end + " is bold." The text is bold.
text should be bold.
Check out colorama. It doesn’t necessarily help with bolding… but you can do colorized output on both Windows and Linux, and control the brightness:
from colorama import * init(autoreset=True) print Fore.RED + 'some red text' print Style.BRIGHT + Fore.RED + 'some bright red text'
There is a very useful module for formatting text (bold, underline, colors..) in Python. It uses
curses lib but it’s very straight-forward to use.
from terminal import render print render('%(BG_YELLOW)s%(RED)s%(BOLD)sHey this is a test%(NORMAL)s') print render('%(BG_GREEN)s%(RED)s%(UNDERLINE)sAnother test%(NORMAL)s')
I wrote a simple module named colors.py to make this a little more pythonic:
import colors with colors.pretty_output(colors.BOLD, colors.FG_RED) as out: out.write("This is a bold red text") with colors.pretty_output(colors.BG_GREEN) as out: out.write("This output have a green background but you " + colors.BOLD + colors.FG_RED + "can" + colors.END + " mix styles")
print '\033[1m Your Name \033[0m'
\033[1m is the escape code for bold in the terminal.
\033[0m is the escape code for end the edited text and back default text format.
If you do not use
\033[0m then all upcoming text of the terminal will become bold.
sudo pip install termcolor
and then try this for colored text
from termcolor import colored print colored('Hello', 'green')
or this for bold text:
from termcolor import colored print colored('Hello', attrs=['bold'])
In Python 3 you can alternatively use
cprint as a drop-in replacement for the built-in
attrs parameter for bold (and other attributes such as
underline) in addition to the normal named
import sys from termcolor import cprint cprint('Hello', 'green', attrs=['bold'], file=sys.stderr)
Full disclosure, this answer is heavily based on Olu Smith’s answer
and was intended as an edit, which would have reduced the noise on this page
considerably but because of some reviewers’ misguided concept of
what an edit is supposed to be, I am now forced to make this a separate answer.
Some terminals allow to print colored text. Some colors look like if they are “bold”. Try:
The sequence ‘\033[1;37m’ makes some terminals to start printing in “bright white” that may look a bit like bolded white. ‘\033[0;0m’ will turn it off.
Assuming that you really mean “print” on a real printing terminal:
>>> text="foo bar\r\noof\trab\r\n" >>> ''.join(s if i & 1 else (s + '\b' * len(s)) * 2 + s ... for i, s in enumerate(re.split(r'(\s+)', text))) 'foo\x08\x08\x08foo\x08\x08\x08foo bar\x08\x08\x08bar\x08\x08\x08bar\r\noof\x08\ x08\x08oof\x08\x08\x08oof\trab\x08\x08\x08rab\x08\x08\x08rab\r\n'
Just send that to your
Simple Boldness – Two Line Code
In python 3 you could use colorama – simple_colors:
(Simple Colours page: https://pypi.org/project/simple-colors/ – go to the heading ‘Usage’.) Before you do what is below, make sure you
pip install simple_colours.
from simple_colors import * print(green('hello', 'bold'))
Printing in bold made easy.
Install quo using pip
from quo import echo echo(f"Hello World!!", bold=True)
A simple approach relies on Unicode Mathematical Alphanumeric Symbols.
def bold( text, trans=str.maketrans( "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", "??????????????????????????????????????????????????????????????", ), ): return text.translate(trans)
assert bold("Hello world") == "????? ?????"
Several pros and cons I can think of. Feel free to add yours in the comments.
- As short as readable.
- No external library.
- Portable: can be used for instance to highlight sections in an ipywidgets
- Extensible to italics, etc. with the appropriate translation tables.
- Language agnostic: the same technic can be implemented in any programming language.
- Requires Unicode support and a font where all the required glyphs are defined. This should be ok on any reasonably modern system, though.
- No copy-paste : produces a faux-text. Note that
- No diacritics.
- In the code above, the translation table is given as an optional argument, meaning that it is evaluated only once, and conveniently encapsulated in the function which makes use it. If you prefer a more standard style, define a global
BOLD_TRANSconstant, or use a closure or a lightweight class.