python - python 输出中的字体格式

标签 python rtf

我正在尝试更改 python 中的输出字体。我读过您可以使用 Tkinter 包,但它对我来说太复杂了。

我正在尝试解析两个文档,一个是纯文本,另一个是斜体。我希望输出交替显示每个文档中的行,纯色和斜体。

目前,程序以普通显示第一行,以斜体显示第二行,然后以斜体显示所有内容。

我想知道是否有任何方法可以更改/重置控制台输出中的字体格式。

谢谢

这是程序。基本上我不知道该怎么做才能获得不同格式的输出:一种是纯文本,另一种是斜体。我在 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()

最佳答案

似乎有一个 ANSI escape code在您的 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()

另一个补充:

根据我们在评论中的讨论,这是一种通过编写 html 文件而不是 rtf 文件来实现的方法:

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

Here当 file1.txt 和 file2.txt 是 Beowulf 诗句的古英语和现代版本时,您可以看到结果。

关于python - python 输出中的字体格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15108930/

相关文章:

.net - 将RTF文件从资源加载到WPF应用程序中的RichTextBox中

java - 列表如何在 RTF 中工作

python - Linux : Display names of all currently attached USB sticks on PyQt5 GUI

python - 选择具有相对 ID 的不同列

wix - 为什么我的许可证不显示?

php - PHP中有没有办法访问压缩的RTF并输出RTF代码

python - Pyinotify——目录重命名后从原始路径引发的事件

非root用户在centos上的python2.7

python - Python 3.x 中的 final类——Guido 没有告诉我什么?