gpt4 book ai didi

python - 如何在 Python 中打印出字符串 "\b"

转载 作者:太空宇宙 更新时间:2023-11-03 13:03:51 26 4
gpt4 key购买 nike

在我的编译器类(class)中,我决定用 Python 编写编译器,因为我喜欢用 Python 编程,尽管我遇到了一个关于如何打印字符的有趣问题。我正在编写的词法分析器要求以非常特殊的方式将包含换页符和退格符的字符串打印到标准输出:用双引号括起来,并分别打印为\f 和\b。我得到的最接近的:

print("{0!r}".format("\b\f"))

产生

'\x08\x0c'

注意单引号和utf8编码。与我关心的其他两个字符相同的命令几乎可以工作:

print("{0!r}".format("\n\t"))

给出:

'\n\t'

要清楚,我需要符合规范的结果(包括引号)是

"\b\f"

简单的方法,如找到\b 和\f 并将它们替换为“\b”和“\f”似乎不起作用......“\”只是 Python 打印反斜杠的方式,所以我可以似乎永远不会像人们期望的那样得到 "\b\f"。

尝试各种字符串编码似乎无济于事。我已经得出结论,我需要编写自定义 string.Formatter,但我想知道是否还有其他我错过的方法。

编辑:感谢您的所有回答。不过,我不认为我问这个问题做得很好。潜在的问题是我将字符串格式化为原始字符串,因为我希望文字换行符显示为“\n”,文字制表符显示为“\t”。但是,当我使用原始格式打印字符串时,我失去了打印出“\b”和“\f”的能力,正如下面所有答案所建议的那样。

今晚我会确认这一点,但根据这些答案,我认为我应该使用的方法是正常格式化输出,并捕获所有文字“\n”、“\t”、“\b” , 和 "\f"带有转义序列的字符,将根据需要打印它们。我仍然希望避免使用 string.Formatter。

EDIT2:我要使用的最后一种方法是使用非原始字符串格式。非抽象版本看起来像:

print('"{0!s}"'.format(a.replace("\b", "\\b").replace("\t", "\\t").replace("\f", "\\f").replace("\n","\\n")))

最佳答案

使用原始字符串:

>>> print(r'\b')
\b

关于python - 如何在 Python 中打印出字符串 "\b",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10519914/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com