私は BBS プログラムを作成しようとしていますが、^Qc6} のようなものを入力して、テキストの色を切り替えられるようにしたいと考えています。正規表現検索を使用して一致させたいテキストを見つけることで、ファイルを1行ずつ読み取ると、一致させたいすべてのインスタンスが見つかります。
しかし、.replace() メソッドを使用すると、処理中の行の最初のインスタンスだけが置き換えられます。他のすべては次の行までありません。したがって、これを修正する方法がわかりません。
#!/usr/bin/env python
import sys
import re
ansi_colors = {"c0" : "\033[0.30m" , "c1" : "\033[31m" , "c2" : "\033[0.32m" , "c3" : "\033[0.33m" , "c4" : "\033[0.34m" , "c5" : "\033[0.35m" , "c6" : "\033[0.36m" , "c7" : "\033[0.37m"}
display = open('sys.start','r')
for lines in display:
match = re.search(r'(\^Q)(\w+)(\})' , lines)
if match:
lines = lines.replace(match.group() , ansi_colors[match.group(2)]).strip("\n")
#print(match.group() + " should be " + ansi_colors[match.group(2)] + "this color.\033[0m")
print(lines)
else: print(lines).strip("\n")