Bagaimana cara mencetak teks tebal dengan Python?

162

Bagaimana cara mencetak teks tebal dengan Python?

Sebagai contoh:

print "hello"

Apa yang harus saya lakukan agar teks "halo" ditampilkan dalam huruf tebal?

Jia-Luo
sumber
2
duplikat teks warna dalam aplikasi terminal di unix . Banyak tautan dalam jawabannya. Jawaban itu ada dalam C, tetapi mudah diterjemahkan ke Python.
Joe
6
Terminal mana yang Anda gunakan? Apakah Anda menggunakan Unix atau Windows?
Sjoerd
Saya menggunakan safari. Baru tahu saya bisa menggunakan tag HTML dengan python.
Jia-Luo

Jawaban:

379
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)
Boubakr
sumber
15
Saya suka cara Anda tidak hanya berani, tetapi membuat seluruh kelas untuk referensi dan membantu semua pengguna melihat. Terima kasih.
GreenHawk1220
3
Saya akan menggunakan ini sebagai dict, bukan kelas. Terima kasih!
dvlden
6
Ini sedang mencetak yang berikut:[1mHello World ![0m
Bekerja pada pengaturan saya: ubuntu 19.10, python 3.7
Elouan Keryell-Even
Bisakah saya menggabungkan huruf tebal dengan warna juga? @Boubakr
alper
62

Gunakan ini:

print '\033[1m' + 'Hello'

Dan untuk kembali normal:

print '\033[0m'

Halaman ini adalah referensi yang bagus untuk mencetak warna dan bobot font. Buka bagian yang mengatakan 'Setel mode grafis:'

Dan perhatikan ini tidak akan bekerja pada semua sistem operasi tetapi Anda tidak memerlukan modul apa pun.

Addison
sumber
31

Anda dapat menggunakan termcolor untuk ini:

 sudo pip install termcolor

Untuk mencetak huruf tebal berwarna:

 from termcolor import colored
 print(colored('Hello', 'green', attrs=['bold']))

Untuk informasi lebih lanjut, lihat termcolor pada PyPi .

simple-colors adalah paket lain dengan sintaksis yang serupa:

 from simple_colors import *
 print(green('Hello', ['bold'])

Setara dengan colorama mungkin Style.BRIGHT.

Olu Smith
sumber
8
Jika saya harus menebak seseorang menurunkan ini karena tidak menjawab pertanyaan sebenarnya bagaimana cara mencetak sesuatu dengan huruf tebal.
Christian
Hak Anda, sudah ada pembaruan. Maaf soal itu kawan.
Olu Smith
22

Dalam pemrograman komputer langsung, tidak ada yang namanya "mencetak teks tebal". Mari kita buat cadangan sedikit dan memahami bahwa teks Anda adalah serangkaian byte dan byte hanya kumpulan bit. Ke komputer, inilah teks "halo" Anda, dalam bentuk biner .

0110100001100101011011000110110001101111

Masing-masing atau nol sedikit. Setiap delapan bit adalah satu byte. Setiap byte, dalam string seperti itu di Python 2.x, satu huruf / angka / tanda baca item (disebut karakter). Jadi misalnya:

01101000 01100101 01101100 01101100 01101111
h        e        l        l        o

Komputer menerjemahkan bit-bit itu menjadi huruf, tetapi dalam string tradisional (disebut string ASCII), tidak ada yang menunjukkan teks tebal. Dalam string Unicode, yang bekerja sedikit berbeda, komputer dapat mendukung karakter bahasa internasional, seperti karakter Cina, tetapi sekali lagi, tidak ada yang mengatakan bahwa beberapa teks tebal dan beberapa teks tidak. Juga tidak ada font, ukuran teks, dll.

Dalam hal mencetak HTML, Anda masih mengeluarkan string. Tetapi program komputer yang membaca string itu (browser web) diprogram untuk menafsirkan teks seperti this is <b>bold</b>"ini tebal " ketika itu mengubah string huruf Anda menjadi piksel di layar. Jika semua teks adalah WYSIWYG, kebutuhan untuk HTML itu sendiri akan dikurangi - Anda hanya akan memilih teks di editor Anda dan cetak tebal alih-alih mengetikkan HTML.

Program lain menggunakan sistem yang berbeda - banyak jawaban menjelaskan sistem yang sama sekali berbeda untuk mencetak teks tebal pada terminal. Saya senang Anda mengetahui cara melakukan apa yang ingin Anda lakukan, tetapi pada titik tertentu, Anda akan ingin memahami cara kerja string dan memori.

Ken Kinder
sumber
9
Tidak memuaskan seperti jawaban ini kelihatannya, itu mungkin salah satu yang paling tepat menjawab pertanyaan yang diajukan . Itu sama sekali bukan pertanyaan Python, melainkan pertanyaan apa pun yang sedang dilakukan .
John Y
8
Masalahnya, semua orang yang tertarik pada jawaban untuk pertanyaan ini memahami biner dan bagaimana ia digunakan untuk merepresentasikan string. Kami tertarik pada cara menggunakan python untuk membuat teks terlihat tebal, yang dijawab di atas. Jawaban ini terlalu berlebihan.
Trevor
16

Ini tergantung jika Anda menggunakan linux / unix:

>>> start = "\033[1m"
>>> end = "\033[0;0m"
>>> print "The" + start + "text" + end + " is bold."
The text is bold.

Kata itu textharus tebal.

aayoubi
sumber
13

Lihat colorama . Itu tidak selalu membantu dengan huruf tebal ... tetapi Anda dapat melakukan keluaran berwarna pada Windows dan Linux, dan mengontrol kecerahan:

from colorama import *
init(autoreset=True)
print Fore.RED + 'some red text'
print Style.BRIGHT + Fore.RED + 'some bright red text'
John Szakmeister
sumber
13

Ada modul yang sangat berguna untuk memformat teks (tebal, garis bawah, warna ..) dengan Python. Ini menggunakan curseslib tetapi sangat mudah digunakan.

Sebuah contoh:

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')

DIPERBARUI:

Saya menulis modul sederhana bernama colors.py untuk membuatnya lebih 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")
Diego Navarro
sumber
2
ImportError: No module named terminal ImportError: No module named render Sebenarnya ini adalah satu-satunya situs yang dapat saya temukan tentang modul "terminal". Tolong jelaskan.
mineral
Tautan di atas digunakan untuk memuat terminalmodul, tetapi mereka mengarahkan ulang halaman. Ini kode yang di- cache oleh google.
Diego Navarro
Ngomong-ngomong, saya telah membuat modul python saya sendiri untuk menyelesaikan ini, lihat saja di @minerals ;-)
Diego Navarro
8
print '\033[1m  Your Name  \033[0m'

\ 033 [1m adalah unicode untuk huruf tebal di terminal \ 033 [0m adalah unicode untuk mengakhiri teks yang diedit dan kembali format teks standar !!!!!

jika Anda tidak menggunakan \ 033 [0m dari semua teks terminal yang akan datang akan menjadi tebal !!!!!!!!!

Bhavik Sakhiya
sumber
tolong tambahkan beberapa penjelasan
Harsha Biyani
2
Harap baca jawaban lain sebelum menjawab! Pertanyaan ini memiliki banyak jawaban yang benar dengan lebih banyak penjelasan. Anda tidak menambahkan sesuatu yang bermanfaat.
Mohammad Dehghan
6

Pasang termcolor modul

sudo pip install termcolor

dan kemudian coba ini untuk teks berwarna

from termcolor import colored
print colored('Hello', 'green')

atau ini untuk teks tebal:

from termcolor import colored
print colored('Hello', attrs=['bold'])

Dalam Python 3 Anda dapat menggunakan alternatif cprintsebagai pengganti drop-in untuk built-in print, dengan parameter opsional kedua untuk warna atau attrsparameter untuk huruf tebal (dan atribut lainnya seperti underline) selain printargumen bernama normal seperti fileatau end.

import sys
from termcolor import cprint
cprint('Hello', 'green', attrs=['bold'], file=sys.stderr)

Pengungkapan penuh, jawaban ini sangat didasarkan pada jawaban Olu Smith dan dimaksudkan sebagai suntingan , yang akan mengurangi kebisingan pada halaman ini secara signifikan tetapi karena konsep sesat beberapa pengulas tentang apa yang seharusnya diedit, saya sekarang dipaksa untuk menjadikan ini jawaban yang terpisah.

Kristen
sumber
3

Beberapa terminal memungkinkan untuk mencetak teks berwarna. Beberapa warna terlihat seperti "berani". Mencoba:

print ('\033[1;37mciao!')

Urutan '\ 033 [1; 37m' membuat beberapa terminal untuk mulai mencetak dalam "putih terang" yang mungkin terlihat agak seperti putih tebal. '\ 033 [0; 0m' akan mematikannya.

Maciek
sumber
3

Dengan asumsi bahwa Anda benar - benar bermaksud "mencetak" pada terminal pencetakan nyata :

>>> 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'

Kirimkan saja ke Anda stdout.

John Machin
sumber
2

Simple Boldness - Two Line Code

Dalam python 3 Anda bisa menggunakan colorama - simple_colors: (halaman Warna Sederhana: https://pypi.org/project/simple-colors/ - pergi ke tajuk 'Penggunaan'.) Sebelum Anda melakukan apa yang di bawah ini, pastikan Anda pip install simple_colours.

from simple_colors import *
print(green('hello', 'bold'))

masukkan deskripsi gambar di sini

PythonMaster202
sumber
Terima kasih! Kita hanya perlu menginstal simple_colors:pip install simple_colors
yzerman