Python'da kalın metinleri nasıl yazdırabilirim?


162

Python'da kalın metinleri nasıl yazdırabilirim?

Örneğin:

print "hello"

“Merhaba” metninin kalın olarak gösterilmesi için ne yapmalıyım?


2
unix'teki terminal uygulamalarında renkli metnin kopyası . Cevaplarda bir sürü bağlantı var. Bu cevap C'dir, ancak Python'a kolayca çevrilebilir.
Joe

6
Hangi terminali kullanıyorsunuz? Unix veya Windows mu kullanıyorsunuz?
Sjoerd

safari kullanıyorum. Sadece python HTML etiketleri kullanabileceğini öğrendim.
Jia-Luo

Yanıtlar:


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)

15
Sadece cesur olmamanızı sevdim, ancak referans göstermeleri ve tüm kullanıcıların görüntülemelerine yardımcı olmaları için bir sınıf oluşturdum. Teşekkür ederim.
GreenHawk1220

3
Bunu bir sınıf olarak değil, bir söz olarak kullanacağım. Teşekkürler!
dvlden

6
Aşağıdaki baskı:[1mHello World ![0m

Kurulumum üzerinde çalışıyor:
Ubuntu

Kalın harfleri renkle de birleştirebilir miyim? @Boubakr
alper

62

Bunu kullan:

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

Ve normale dönmek için:

print '\033[0m'

Bu sayfa , renk ve yazı tipi ağırlıklarında yazdırmak için iyi bir referanstır. 'Grafik modunu ayarla' başlıklı bölüme gidin:

Ve bunun tüm işletim sistemlerinde çalışmadığını, ancak herhangi bir modüle ihtiyacınız olmadığını unutmayın.


31

Bunun için termcolor kullanabilirsiniz:

 sudo pip install termcolor

Renkli bir kalın yazdırmak için:

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

Daha fazla bilgi için PyPi'deki termcolor'a bakın .

simple-colors benzer sözdizimine sahip başka bir pakettir:

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

Coloramadaki eşdeğer olabilir Style.BRIGHT.


8
Birini tahmin etmek zorunda kalsaydım, bir şeyin cesurca nasıl yazdırılacağı sorusuna cevap vermediği için bunu reddettim.
Christian

Hakkınız, bir güncelleme oldu. Bu adamlar için üzgünüm.
Olu Smith

22

Düz bilgisayar programlamasında "kalın metin yazdırma" diye bir şey yoktur. Biraz yedekleyelim ve metninizin bir bayt dizisi olduğunu ve baytların sadece bit demetleri olduğunu anlayalım. Bilgisayara, işte "merhaba" metniniz, ikili .

0110100001100101011011000110110001101111

Her biri veya sıfır biraz. Her sekiz bit bir bayttır. Her bayt, Python 2.x'de olduğu gibi bir dizede, bir harf / sayı / noktalama öğesi (karakter olarak adlandırılır). Yani mesela:

01101000 01100101 01101100 01101100 01101111
h        e        l        l        o

Bilgisayar bu bitleri harflere çevirir, ancak geleneksel bir dizede (ASCII dizesi olarak adlandırılır), kalın metni gösterecek hiçbir şey yoktur. Biraz farklı çalışan bir Unicode dizgisinde, bilgisayar Çince olanlar gibi uluslararası dil karakterlerini destekleyebilir, ancak yine, bazı metinlerin kalın ve bazı metinlerin olmadığını söyleyecek hiçbir şey yoktur. Ayrıca açık yazı tipi, metin boyutu vb. Yoktur.

HTML yazdırılması durumunda, hala bir dize çıkarıyorsunuzdur. Ancak bu dizeyi okuyan bilgisayar programı (bir web tarayıcısı), harf dizenizi ekrandaki piksele dönüştürdüğünde metni this is <b>bold</b>"bu kalın " gibi yorumlayacak şekilde programlanmıştır . Tüm metinler WYSIWYG olsaydı, HTML'ye olan gereksinim hafifletilirdi - sadece editörünüzdeki metni seçip HTML yazmak yerine kalın yazardınız.

Diğer programlar farklı sistemler kullanır - birçok yanıt terminallerde kalın metin yazdırmak için tamamen farklı bir sistemi açıklar. Yapmak istediğiniz şeyi nasıl yapacağınızı öğrendiğinize sevindim, ancak bir noktada dizelerin ve hafızanın nasıl çalıştığını anlamak isteyeceksiniz.


9
Bu cevap göründüğü kadar tatmin edici görünmüyorsa, muhtemelen soruyu sorulduğu gibi en doğru şekilde cevaplayan cevaptır . Bu bir Python sorusu değil, yerine getirmekte olan her soru.
John Y

8
Mesele şu ki, bu sorunun cevabıyla ilgilenen herkes ikili ve dizeleri temsil etmek için nasıl kullanıldığını anlıyor. Yukarıda cevaplanan metnin kalın görünmesini sağlamak için python'un nasıl kullanılacağı ile ilgileniyoruz. Bu cevap bilgiçlikten çok daha fazla.
Trevor

16

Bu, linux / unix kullanıp kullanmadığınıza bağlıdır:

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

Kelime textkalın olmalı.


13

Colorama göz atın . Kalın harflerle yardımcı olması gerekmez ... ancak hem Windows hem de Linux'ta renklendirilmiş çıktılar yapabilir ve parlaklığı kontrol edebilirsiniz:

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

13

Python'da metni biçimlendirmek için çok yararlı bir modül vardır (kalın, alt çizgi, renkler ..). cursesLib kullanır, ancak kullanımı çok basittir.

Bir örnek:

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

GÜNCELLENMİŞ:

Bunu biraz daha pitonik hale getirmek için colors.py adında basit bir modül yazdım :

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

2
ImportError: No module named terminal ImportError: No module named render Aslında bu "terminal" modülü hakkında bulabildiğim tek sitedir. Lütfen detaylandırın.
mineraller

Yukarıdaki bağlantı terminalmodülü içeriyordu , ancak sayfayı yeniden yönlendiriyorlar. İşte google tarafından önbelleğe alınan kod .
Diego Navarro

Her neyse, bunu çözmek için kendi python modülümü yaptım, @minerals ;-) 'e bakın
Diego Navarro

8
print '\033[1m  Your Name  \033[0m'

\ 033 [1m, terminalde kalın harflerle yazılmış unicode \ 033 [0m, düzenlenen metni sonlandırmak ve varsayılan metin formatını geri yüklemek için unicode !!!!!

\ 033 [0m] kullanmazsanız, terminalin yaklaşan tüm metinleri kalın olur !!!!!!!!!


lütfen biraz açıklama ekleyin
Harsha Biyani

2
Lütfen cevaplamadan önce başka bir cevap okuyun! Bu sorunun daha fazla açıklaması olan birçok doğru cevabı var. Yararlı bir şey eklemiyorsunuz.
Muhammed Dehghan

6

termcolorModülü takın

sudo pip install termcolor

ve sonra renkli metin için deneyin

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

veya kalın metin için bu:

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

Python 3, alternatif olarak kullanabileceğiniz cprintbir damla-in yerine yerleşik gelince printrenkler için isteğe bağlı ikinci parametre veya birlikte attrskalın (örneğin ve diğer özellikleri için parametre underlinenormale adında ek olarak) printgibi argümanlar fileveya end.

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

Tam açıklama, bu cevap büyük ölçüde Olu Smith'in cevabına dayanıyor ve bu sayfadaki gürültüyü önemli ölçüde azaltacak bir düzenleme olarak tasarlandı , ancak bazı yorumcuların bir düzenlemenin ne olması gerektiği konusunda yanlış yönlendirilmiş konsepti nedeniyle, şimdi zorlandım bunu ayrı bir cevap haline getirmek.


3

Bazı terminaller renkli metin yazdırmaya izin verir. Bazı renkler "kalın" gibi görünür. Deneyin:

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

'\ 033 [1; 37m' dizisi, bazı uçların kalın beyaza benzeyen "parlak beyaz" olarak yazdırmaya başlamasını sağlar. '\ 033 [0; 0m' kapanacaktır.


3

Gerçek bir baskı terminalinde gerçekten "baskı" demek istediğinizi varsayarsak :

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

Sadece gönderin stdout.


2

Basit Kalınlık - İki Satır Kodu

Python 3'te colorama kullanabilirsiniz - simple_colors: (Basit Renkler sayfası: https://pypi.org/project/simple-colors/ - 'Kullanım' başlığına gidin.) Aşağıdakileri yapmadan önce emin olun pip install simple_colours.

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

resim açıklamasını buraya girin


Teşekkürler! Sadece simple_colors'u pip install simple_colors
kurmamız
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.