【问题标题】:Printing a literal python string in octal以八进制打印文字 python 字符串
【发布时间】:2018-04-04 15:47:10
【问题描述】:

由于未知的原因,我是需要以八进制格式显示才能使用的元数据的消费者。我试图弄清楚如何将它表示为八进制。示例:

x = "\n)\n\022foobar"
print x 

)
foobar

print repr(x)
'\n)\n\x12foobar'

我如何让 x 以八进制编码的方式打印它的分配方式?

【问题讨论】:

    标签: python string literals octal


    【解决方案1】:

    你不能;这种代表性就消失了。如果要输出“\022”,则需要自己处理,或者需要存储"\\022"

    【讨论】:

    • 跟进:同理,打印x时分不清x = 0o22x = 34;它们都是(在字节码级别,在编译阶段创建)相同的语句,文字的替代形式被压缩成单个实际值,不知道实际创建它的文字是什么。
    • 感谢您的帮助,我明白了,但是为什么我不能让 python 以我想要的“编码”打印字符串。归根结底,它们是完全相同的字节值,只是表示形式不同,对吗?不应该让python以我想要的表示形式打印它吗?
    • 不,因为你没有写str.__repr__()
    • @KarthikSridhar:您可以打印 一些 替代表示(例如,打印 repr(x) 而不是您所看到的 x),但 Python 不直接提供完整的可调整性说输出字符串时将使用几种转义形式中的哪一种;它所关心的是它输出一个正确的。你需要手动格式化字符串以获得你想要的结果,重新实现很多 Python 的逻辑来做到这一点。真正的问题是为什么需要这种特定的输出格式;很有可能你做错了什么,或者以错误的方式。
    猜你喜欢
    • 2017-08-30
    • 1970-01-01
    • 1970-01-01
    • 2019-04-20
    • 2013-04-08
    • 1970-01-01
    • 2012-09-25
    • 2012-12-12
    • 2021-05-15
    相关资源
    最近更新 更多