1

Pythonで出力フォントを変更しようとしています。Tkinter パッケージを使用できることを読みましたが、私には複雑すぎます。

1 つはプレーン テキスト、もう 1 つはイタリック体の 2 つのドキュメントを解析しようとしています。各ドキュメントの出力をプレーンとイタリックの交互の行にしたい。

現在、プログラムは最初の行を無地で表示し、2 行目をイタリック体で表示し、その後はすべてイタリック体で表示します。

コンソール出力のフォント形式を変更/リセットする方法があるかどうか知りたいです。

ありがとう、

こちらがプログラムです。基本的に、さまざまな形式で出力を取得するために何をすべきかわかりません.1つはプレーンテキストで、もう1つはイタリック体です。Windowsの下でPython 3で実行しています。

L1 = open ('vera.txt','r',-1,'utf-8')
L2 = open ('vera_en2.txt','r',-1,'utf-8')
O = open ('output.txt','w',-1,'utf-8')
for line in L1:
    line2 = L2.readline()
    print(line, end='')
    print(line2)
    O.write(line)
    O.write(line2)
    O.write("\n")
L1.close()
L2.close()
O.close()
4

1 に答える 1

1

フォントを斜体に設定するANSI エスケープ コードが含まれている可能性があります 。これを確認するには、ファイルを開くか、そのファイルの最初の行をvera_en2.txt印刷します。repr()

どうやら既に ANSI 互換の端末で作業しているか、イタリック体のテキストが表示されていないようです。print("\033[0m")そのため、 でフォントをリセットし、 で再びイタリック体を有効にできるはずですprint("\033[3m")

これが難解すぎると思われる場合は、coloramaを使用することをお勧めします。

編集:

ああ、斜体のテキストを含む RTF ファイルを書きたいとします。そして、あなたの .txt ファイルは実際には .txt ファイルではありません。それは私が上で説明したこととはまったく異なります。

実際の rtf のプレーン テキストを分析することで、この小さな例を思いつきました。通常、斜体、太字の単語を含む小さな rtf ファイルを生成します。\i と \b は、これらの形式を切り替えるために使用されます。

# open file
myrtf = open('myrtf.rtf', 'w ')

# write some necessary header info
myrtf.write(r'{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss\fcharset0 Arial;}}')

# write the actual text - notice I'm using raw strings (r'')
myrtf.write(r'normal \i italic \i0 \b bold \b0 normal\n')

# write end of file stuff
myrtf.write(r'}\n\x00')

# close file
myrtf.close()

また、他の質問に答えます。コンソールでイタリック体を表示するのは難しいかもしれません。ほとんどの端末はイタリック体をサポートしていません。

上記のコード サンプルを質問の問題に適合させるには:

L1 = open ('file1.txt','r')
L2 = open ('file2.txt','r')
O = open ('output.rtf','w')

# write header
O.write(r'{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fswiss\fcharset0 Arial;}}')

for line in L1:
    line2 = r"\i  " + L2.readline() + r" \i0\line\par" # make text from L2 italic
    print(line, end='')
    print(line2)
    O.write(line)
    O.write(line2)

# close rtf
O.write(r'}\n\x00')

L1.close()
L2.close()
O.close()

別の追加:

コメントでの議論に基づいて、rtf の代わりに html ファイルを作成する 1 つの方法を次に示します。

L1 = open ('file1.txt','r')
L2 = open ('file2.txt','r')
O = open ('output.html','w')

# write header
O.write(r'<html><head><title>Foobar</title></head><body><table>')

for line in L1:
    line2 = r"<i>" + L2.readline() + r"</i></br>" # make text from L2 italic
    O.write("<tr>")
    O.write("<td>%s</td>" % line)
    O.write("<td>%s</td>" % line2)
    O.write("</tr>\n")

# footer
O.write(r'</table></body></html>')

L1.close()
L2.close()
O.close()

ここでは、file1.txt と file2.txt が Beowulf の詩の古英語版と現代版である場合の結果を確認できます。

于 2013-02-27T14:01:51.207 に答える