[Python] print 출력을 통해 특정 키워드의 텍스트 색상과 배경색을 변경합니다

8120 단어 표준 출력Python

이 문장의 목적


Python에서 특정 단어를 강조 표시하고 출력하는 함수를 만들었습니다.

페이지의 마지막 부분코드 목록이 있습니다.

해설


필요한 라이브러리는 이것뿐입니다.
import re
먼저 문자 색상과 배경색을 수정하는 사전을 만듭니다.
이번"yellow"이면 노란색 배경색, "red"면 빨간색 문자.
color_dic = {'yellow':'\033[43m', 'red':'\033[31m', 'blue':'\033[34m', 'end':'\033[0m'}
다음은 돋보이게 하고 싶은 키워드를 설정합니다.이번에는 도도부 현명을 키워드로 설정했다.
keyword = ["東京都", "千葉県", "埼玉県", "神奈川県", ...]
위에서 설정한 키워드를 for문 순서대로 검색합니다. 이 목록의 배열 순서가 중요합니다.키워드에 따라 다른 키워드의 일부 문자열이 될 수 있기 때문이다.예를 들어 시내 마을 검색 중
keyword = [... , "津市", "大津市", ...]
의 경우 간단하게 왼쪽부터 단어를 찾아 찾은 단어에 색을 칠하면 다음과 같다.

따라서 해결책으로 목록의 단어는 글자 수가 긴 것부터 순서대로 배열된다.
이렇게 되면'대진시'를 먼저 검색하기 때문에 이런 문제가 발생하지 않는다.
다음은 이 코드입니다.
#keyword = sorted(keyword, key=lambda x:len(x), reverse=True)
#コメントでより良い書き方をご指摘いただきました.
keyword.sort(key=len, reverse=True) 
마지막으로 출력된 문자, 키워드, 색상에 지정된 정보에 따라 출력 함수를 만듭니다.
def print_hl(text, keyword, color="yellow"):
    for kw in keyword:
        bef = kw
        aft = color_dic[color] + kw + color_dic["end"]
        text = re.sub(bef, aft, text)
    print(text)
시행례는 다음과 같다.
text = "私は東京都に住んでいる"

print_hl(text, keyword)

이상!

코드 목록

import re

color_dic = {'yellow':'\033[43m', 'red':'\033[31m', 'blue':'\033[34m', 'end':'\033[0m'}

def print_hl(text, keyword, color="yellow"):
    for kw in keyword:
        bef = kw
        aft = color_dic[color] + kw + color_dic["end"]
        text = re.sub(bef, aft, text)
    print(text)

keyword = ["東京都", "千葉県", "埼玉県", "神奈川県"]
keyword.sort(key=len, reverse=True)
text = "私は東京都に住んでいる"

print_hl(text, keyword)

참고 자료


콘솔에 컬러 출력을 표시하는 방법

좋은 웹페이지 즐겨찾기