【问题标题】:setfill and setw python equivalent?setfill 和 setw python 等效?
【发布时间】:2014-06-11 14:47:50
【问题描述】:

我目前正在将一些 C++ 代码移植到 python,但不知道如何翻译:

print  std::setfill('0') << std::setw(2) << std::hex << myVar << std::dec << " "

如何将std::setfill('0')std::setw(2) 翻译成python?

【问题讨论】:

  • 你看起来不是很努力...'&lt;any_char&gt;'*n 返回 any_char n 次。 "%x"%myVar 将 myVar 格式化为十六进制。
  • 但谁会先写这样的东西呢?如果myVar 具有需要这种格式的语义,那么您将编写一个执行该操作的单个操纵器,以与具有该语义的所有变量一起使用。 (在 Python 中,我能想到的唯一方法是编写一个执行转换的函数,使用所需的格式,并返回一个字符串。)
  • 另外,当然:您不会将格式返回到std::dec;您可以将其重置为更改之前的状态。 (这可以在自定义操纵器的析构函数中完成,或者通过使用将格式保存在其构造函数中并在其析构函数中恢复它的作用域对象来完成。)
  • 查找 ljust 和 rjust。

标签: python c++ std


【解决方案1】:

我来这里是为了寻找 std::setw(n) 的等价物。出于好奇,我使用了'{:&gt;n}'.format(nbr)

例子:

In [13]: '{:>2}'.format(1)
Out[13]: ' 1'
In [14]: '{:>2}'.format(10)
Out[14]: '10'

【讨论】:

    【解决方案2】:

    没有直接的等价物,但您可以使用format 函数转换每个要显示的值。格式规范见https://docs.python.org/2/library/string.html#format-specification-mini-language

    print '{:02x}'.format(myVar)
    

    【讨论】:

    • 当然,您可以将其包装在一个函数中,这样格式说明符在您的程序中只出现一次,并标有逻辑语义。
    猜你喜欢
    • 2012-08-27
    • 2013-07-10
    • 1970-01-01
    • 1970-01-01
    • 2017-07-20
    • 1970-01-01
    • 2016-04-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多