Làm cách nào để in văn bản in đậm trong Python?


162

Làm cách nào để in văn bản in đậm trong Python?

Ví dụ:

print "hello"

Tôi nên làm gì để đoạn văn bản Hello hello được hiển thị in đậm?


2
trùng lặp văn bản màu trong ứng dụng đầu cuối trong unix . Rất nhiều liên kết trong các câu trả lời. Câu trả lời đó là bằng C, nhưng dễ dàng dịch sang Python.
Joe

6
Bạn đang sử dụng thiết bị đầu cuối nào? Bạn đang dùng Unix hay Windows?
Sjoerd

Tôi đang sử dụng safari. Chỉ cần phát hiện ra tôi có thể sử dụng các thẻ HTML trong python.
Jia-Luo

Câu trả lời:


377
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
Tôi thích cách bạn không làm đậm, nhưng đã tạo cả một lớp để họ tham khảo và giúp tất cả người dùng xem. Cảm ơn bạn.
GreenHawk1220

3
Tôi sẽ sử dụng nó như là chính tả, không phải là một lớp học. Cảm ơn!
dvlden

6
Nó đang in như sau:[1mHello World ![0m

Làm việc trên thiết lập của tôi: Ubuntu 19.10, python 3.7
Elouan Keryell-Ngay cả

Tôi có thể kết hợp đậm với màu sắc là tốt? @Boubakr
alper

61

Dùng cái này:

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

Và để thay đổi trở lại bình thường:

print '\033[0m'

Trang này là một tài liệu tham khảo tốt để in màu và trọng lượng phông chữ. Chuyển đến phần có nội dung 'Đặt chế độ đồ họa:'

Và lưu ý rằng điều này sẽ không hoạt động trên tất cả các hệ điều hành nhưng bạn không cần bất kỳ mô-đun nào.


31

Bạn có thể sử dụng termcolor cho việc này:

 sudo pip install termcolor

Để in đậm màu:

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

Để biết thêm thông tin, xem termcolor trên PyPi .

màu đơn giản là một gói khác có cú pháp tương tự:

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

Tương đương trong colorama có thể là Style.BRIGHT.


8
Nếu tôi phải đoán ai đó đã đánh giá thấp điều này bởi vì nó không trả lời câu hỏi thực tế làm thế nào để in một cái gì đó in đậm.
Christian

Quyền của bạn, đã có một bản cập nhật. Xin lỗi về những kẻ đó.
Olu Smith

22

Trong lập trình máy tính thẳng, không có thứ gọi là "in chữ đậm". Hãy sao lưu một chút và hiểu rằng văn bản của bạn là một chuỗi byte và byte chỉ là một bó bit. Đối với máy tính, đây là văn bản "xin chào" của bạn, ở dạng nhị phân .

0110100001100101011011000110110001101111

Mỗi một hoặc không là một chút. Cứ tám bit là một byte. Mỗi byte là, trong một chuỗi như thế trong Python 2.x, một chữ cái / số / mục chấm câu (được gọi là một ký tự). Ví dụ:

01101000 01100101 01101100 01101100 01101111
h        e        l        l        o

Máy tính dịch các bit đó thành các chữ cái, nhưng trong một chuỗi truyền thống (được gọi là chuỗi ASCII), không có gì để chỉ văn bản in đậm. Trong một chuỗi Unicode, hoạt động hơi khác một chút, máy tính có thể hỗ trợ các ký tự ngôn ngữ quốc tế, như tiếng Trung Quốc, nhưng một lần nữa, không có gì để nói rằng một số văn bản được in đậm và một số văn bản thì không. Cũng không có phông chữ rõ ràng, kích thước văn bản, vv

Trong trường hợp in HTML, bạn vẫn xuất ra một chuỗi. Nhưng chương trình máy tính đọc chuỗi đó (trình duyệt web) được lập trình để diễn giải văn bản như this is <b>bold</b>"điều này được in đậm " khi nó chuyển đổi chuỗi ký tự của bạn thành pixel trên màn hình. Nếu tất cả văn bản là WYSIWYG, thì nhu cầu về HTML sẽ được giảm bớt - bạn chỉ cần chọn văn bản trong trình chỉnh sửa của mình và in đậm nó thay vì gõ HTML.

Các chương trình khác sử dụng các hệ thống khác nhau - rất nhiều câu trả lời giải thích một hệ thống hoàn toàn khác để in văn bản in đậm trên thiết bị đầu cuối. Tôi rất vui vì bạn đã tìm ra cách để làm những gì bạn muốn làm, nhưng tại một số điểm, bạn sẽ muốn hiểu cách thức chuỗi và bộ nhớ hoạt động.


9
Có vẻ như không thỏa mãn như câu trả lời này, có lẽ đây là câu trả lời đúng nhất cho câu hỏi . Đây hoàn toàn không phải là một câu hỏi Python, mà là một câu hỏi bất cứ điều gì đang làm .
John Y

8
Vấn đề là, mọi người quan tâm đến câu trả lời cho câu hỏi này đều hiểu nhị phân và cách nó được sử dụng để biểu diễn các chuỗi. Chúng tôi quan tâm đến cách sử dụng python để làm cho văn bản trông đậm, được trả lời ở trên. Câu trả lời này là cách trên phạm vi.
Trevor

16

Điều này phụ thuộc nếu bạn đang sử dụng linux / unix:

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

Chữ textnên in đậm.


13

Kiểm tra colorama . Nó không nhất thiết phải giúp làm mờ ... nhưng bạn có thể thực hiện đầu ra được tô màu trên cả Windows và Linux và kiểm soát độ sáng:

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

12

Có một mô-đun rất hữu ích để định dạng văn bản (đậm, gạch chân, màu sắc ..) trong Python. Nó sử dụng curseslib nhưng nó rất đơn giản để sử dụng.

Một ví dụ:

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

CẬP NHẬT:

Tôi đã viết một mô-đun đơn giản có tên colors.py để làm cho điều này thêm một chút 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")

2
ImportError: No module named terminal ImportError: No module named render Trên thực tế đây là trang web duy nhất tôi có thể tìm thấy về mô-đun "thiết bị đầu cuối". Xin hãy giải thích.
khoáng sản

Liên kết trên được sử dụng để chứa terminalmô-đun, nhưng chúng đã chuyển hướng trang. Đây là mã được lưu trữ bởi google.
Diego Navarro

Dù sao, tôi đã tạo ra mô-đun trăn của riêng mình để giải quyết vấn đề này, hãy xem thử @minemony ;-)
Diego Navarro

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

\ 033 [1m là unicode in đậm trong terminal \ 033 [0m là unicode để kết thúc văn bản đã chỉnh sửa và định dạng lại văn bản mặc định !!!!!

nếu bạn không sử dụng \ 033 [0m thì tất cả văn bản sắp tới của thiết bị đầu cuối sẽ trở nên đậm !!!!!!!!!


vui lòng thêm một số lời giải thích
Harsha Biyani

2
Xin vui lòng đọc câu trả lời khác trước khi trả lời! Câu hỏi này có rất nhiều câu trả lời đúng với nhiều lời giải thích hơn. Bạn không thêm bất cứ điều gì hữu ích.
Mohammad Deh Afghanistan

6

Cài đặt termcolormô-đun

sudo pip install termcolor

và sau đó thử điều này cho văn bản màu

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

hoặc điều này cho văn bản in đậm:

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

Trong Python 3, bạn có thể sử dụng thay thế cprintthả xuống cho tích hợp sẵn print, với tham số thứ hai tùy chọn cho màu sắc hoặc attrstham số cho đậm (và các thuộc tính khác như underline) ngoài các printđối số có tên thông thường như filehoặc end.

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

Tiết lộ đầy đủ, câu trả lời này chủ yếu dựa trên câu trả lời của Olu Smith và được dự định là một chỉnh sửa , điều này sẽ làm giảm đáng kể tiếng ồn trên trang này nhưng vì khái niệm sai lầm của một số nhà phê bình về việc chỉnh sửa là gì, tôi hiện đang bị ép buộc để làm cho điều này một câu trả lời riêng biệt.


3

Giả sử rằng bạn thực sự có nghĩa là "in" trên thiết bị đầu cuối in thực sự :

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

Chỉ cần gửi nó cho bạn stdout.


2

Một số thiết bị đầu cuối cho phép in văn bản màu. Một số màu trông giống như chúng "đậm". Thử:

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

Trình tự '\ 033 [1; 37m' làm cho một số thiết bị đầu cuối bắt đầu in bằng "màu trắng sáng" có thể trông hơi giống màu trắng in đậm. '\ 033 [0; 0m' sẽ tắt.


2

Độ đậm đơn giản - Mã hai dòng

Trong python 3, bạn có thể sử dụng colorama - simple_colors: (Trang Màu đơn giản: https://pypi.org/project/simple-colors/ - đi đến tiêu đề 'Cách sử dụng'.) Trước khi bạn làm những gì bên dưới, hãy chắc chắn rằng bạn pip install simple_colours.

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

nhập mô tả hình ảnh ở đây


Cảm ơn! Trước tiên chúng ta chỉ cần cài đặt Simple_colors:pip install simple_colors
yzerman
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.