ฉันจะพิมพ์ข้อความตัวหนาใน Python ได้อย่างไร
ตัวอย่างเช่น:
print "hello"
ฉันควรทำอย่างไรเพื่อให้ข้อความ“ สวัสดี” ปรากฏเป็นตัวหนา
ฉันจะพิมพ์ข้อความตัวหนาใน Python ได้อย่างไร
ตัวอย่างเช่น:
print "hello"
ฉันควรทำอย่างไรเพื่อให้ข้อความ“ สวัสดี” ปรากฏเป็นตัวหนา
คำตอบ:
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'
และเปลี่ยนกลับเป็นปกติ:
print '\033[0m'
หน้านี้เป็นข้อมูลอ้างอิงที่ดีสำหรับการพิมพ์สีและน้ำหนักแบบอักษร ไปที่ส่วนที่ระบุว่า 'ตั้งค่าโหมดกราฟิก:'
และทราบว่าสิ่งนี้จะไม่ทำงานบนระบบปฏิบัติการทั้งหมด แต่คุณไม่ต้องการโมดูลใด ๆ
คุณสามารถใช้ termcolor สำหรับสิ่งนี้:
sudo pip install termcolor
หากต้องการพิมพ์ตัวหนาสี:
from termcolor import colored
print(colored('Hello', 'green', attrs=['bold']))
สำหรับข้อมูลเพิ่มเติมดูtermcolor บน PyPiPyPi
สีง่ายเป็นแพคเกจอื่นที่มีไวยากรณ์ที่คล้ายกัน:
from simple_colors import *
print(green('Hello', ['bold'])
เทียบเท่าในColoramaStyle.BRIGHTอาจจะ
ในการเขียนโปรแกรมคอมพิวเตอร์แบบตรงไม่มีสิ่งเช่น "การพิมพ์ข้อความตัวหนา" ลองสำรองข้อมูลสักหน่อยและทำความเข้าใจว่าข้อความของคุณเป็นสตริงไบต์และไบต์เป็นเพียงการรวมกลุ่มของบิต ไปยังเครื่องคอมพิวเตอร์ของคุณที่นี่ "สวัสดี" ข้อความในไบนารี
0110100001100101011011000110110001101111
หนึ่งหรือศูนย์แต่ละรายการจะเล็กน้อย ทุก ๆ แปดบิตคือหนึ่งไบต์ ทุกไบต์คือสตริงเช่นเดียวกับใน Python 2.x รายการหนึ่งตัวอักษร / หมายเลข / เครื่องหมายวรรคตอน (เรียกว่าตัวอักษร) ตัวอย่างเช่น:
01101000 01100101 01101100 01101100 01101111
h e l l o
คอมพิวเตอร์แปลบิตเหล่านั้นเป็นตัวอักษร แต่ในสตริงดั้งเดิม (เรียกว่าสตริง ASCII) ไม่มีอะไรที่จะบ่งบอกถึงตัวหนา ในสตริง Unicode ซึ่งทำงานแตกต่างกันเล็กน้อยคอมพิวเตอร์สามารถรองรับตัวอักษรภาษาต่างประเทศเช่นจีน แต่ไม่มีอะไรจะพูดได้ว่าข้อความบางส่วนเป็นตัวหนาและข้อความบางส่วนไม่ นอกจากนี้ยังไม่มีแบบอักษรขนาดตัวอักษรที่ชัดเจน ฯลฯ
ในกรณีของการพิมพ์ HTML คุณยังคงส่งออกสตริง แต่โปรแกรมคอมพิวเตอร์ที่อ่านสตริงนั้น (เว็บเบราว์เซอร์) นั้นถูกตั้งโปรแกรมให้ตีความข้อความเช่นthis is <b>bold</b>"นี่เป็นตัวหนา " เมื่อมันแปลงสตริงตัวอักษรของคุณเป็นพิกเซลบนหน้าจอ หากข้อความทั้งหมดเป็น WYSIWYG ความต้องการใช้ HTML จะลดลง - คุณเพียงแค่เลือกข้อความในเครื่องมือแก้ไขของคุณและทำตัวหนาแทนที่จะพิมพ์ HTML
โปรแกรมอื่น ๆ ใช้ระบบที่แตกต่างกัน - คำตอบมากมายอธิบายระบบที่แตกต่างอย่างสิ้นเชิงสำหรับการพิมพ์ข้อความตัวหนาบนเครื่องเทอร์มินัล ฉันดีใจที่คุณพบวิธีการทำสิ่งที่คุณต้องการ แต่ในบางจุดคุณจะต้องเข้าใจว่าสตริงและหน่วยความจำทำงานอย่างไร
ขึ้นอยู่กับว่าคุณกำลังใช้ linux / unix:
>>> start = "\033[1m"
>>> end = "\033[0;0m"
>>> print "The" + start + "text" + end + " is bold."
The text is bold.
คำtextควรเป็นตัวหนา
มีโมดูลที่มีประโยชน์มากสำหรับการจัดรูปแบบข้อความ (ตัวหนาขีดเส้นใต้สี .. ) ใน Python มันใช้curses lib แต่มันตรงไปตรงมามากที่จะใช้
ตัวอย่าง:
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')
ฉันเขียนโมดูลง่าย ๆ ชื่อว่าcolors.pyเพื่อทำให้เป็น 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")
ImportError: No module named terminal ImportError: No module named render ที่จริงนี่เป็นเว็บไซต์เดียวที่ฉันสามารถหาเกี่ยวกับ "terminal" โมดูล กรุณาอธิบายอย่างละเอียด
terminalโมดูล แต่มีการเปลี่ยนเส้นทางหน้า นี่คือรหัสที่แคชโดย google
print '\033[1m Your Name \033[0m'
\ 033 [1m คือยูนิโค้ดสำหรับตัวหนาในเทอร์มินัล \ 033 [0m คือยูนิโค้ดสำหรับสิ้นสุดข้อความที่แก้ไขและกลับเป็นข้อความเริ่มต้นที่จัดรูปแบบ !!!!!
ถ้าคุณไม่ใช้ \ 033 [0m มากกว่าข้อความที่กำลังจะมาถึงของเทอร์มินัลจะกลายเป็นตัวหนา !!!!!!!!!
ติดตั้งtermcolorโมดูล
sudo pip install termcolor
จากนั้นลองใช้ข้อความสี
from termcolor import colored
print colored('Hello', 'green')
หรือนี่คือข้อความตัวหนา:
from termcolor import colored
print colored('Hello', attrs=['bold'])
ในหลาม 3 คุณสามารถเลือกใช้cprintเป็นดรอปแทนสำหรับในตัวprintด้วยพารามิเตอร์ที่สองเป็นตัวเลือกสำหรับสีหรือattrsพารามิเตอร์สำหรับตัวหนา (และคุณลักษณะอื่น ๆ เช่นunderline) นอกเหนือไปจากการตั้งชื่อตามปกติprintข้อโต้แย้งเช่นหรือfileend
import sys
from termcolor import cprint
cprint('Hello', 'green', attrs=['bold'], file=sys.stderr)
การเปิดเผยแบบเต็มคำตอบนี้ขึ้นอยู่กับคำตอบของ Olu Smith และมีจุดประสงค์เพื่อแก้ไขซึ่งจะลดเสียงรบกวนในหน้านี้อย่างมาก แต่เนื่องจากแนวคิดที่เข้าใจผิดของผู้ตรวจสอบบางคนเกี่ยวกับสิ่งที่การแก้ไขควรจะเป็นตอนนี้ฉันถูกบังคับ เพื่อทำให้คำตอบแยกออกจากกัน
บางเทอร์มินัลอนุญาตให้พิมพ์ข้อความสี บางสีดูเหมือนว่าเป็น "ตัวหนา" ลอง:
print ('\033[1;37mciao!')
ลำดับ '\ 033 [1; 37m' ทำให้บางเทอร์มินัลเริ่มพิมพ์ใน "สีขาวสว่าง" ที่อาจดูเล็กน้อยเหมือนสีขาวที่เป็นตัวหนา '\ 033 [0; 0m' จะปิด
สมมติว่าคุณจริงๆหมายถึง "พิมพ์" บนจริงขั้วพิมพ์:
>>> 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'
stdoutเพียงแค่ส่งมาที่คุณ
ในหลาม 3 คุณสามารถใช้ Colorama - simple_colors: (สีที่เรียบง่ายหน้านี้: https://pypi.org/project/simple-colors/ . - ไปที่หัวข้อ 'การใช้งาน) pip install simple_coloursก่อนที่คุณจะทำในสิ่งที่อยู่ด้านล่างให้แน่ใจว่าคุณ
from simple_colors import *
print(green('hello', 'bold'))
pip install simple_colors