Python中文
首页
教程
问答
标签
搜索
登录
注册
使用“{0:d}”的字符串格式不转换为整数
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>这和<a href="https://stackoverflow.com/questions/5627605/string-formatting-with-0d-format-gives-unknown-format-code-d-for-object-o">this question about floats</a>中的问题差不多。</p> <p>当您得到一个可以转换为整数的值时,旧的<code>%d</code>会将其转换,但格式不会</p> <pre><code>class MyIntegerTenClass: def __int__(self): return 10 def __str__(self): return 'ten' ten = MyIntegerTenClass() print '%d, %02X, %s' % (ten, ten, ten) # ok print '{0}'.format(ten) # ok print '{0:d}, {0:02X}'.format(ten) # ValueError: Unknown format code 'd' for object of type 'str' </code></pre> <p>有没有一种方法可以修改format的行为,而不触及要格式化的值的类(而不向该类添加<code>__format__</code>方法)?</p> <p>编辑:我的目标是使格式依赖于格式字符串,但不依赖于值。 因此,如果格式字符串显示“d”或“x”,则将值转换为int,然后转换为十进制或十六进制表示。 如果格式字符串为“s”,则直接将其转换为字符串。就像以前那样。</p> <p>实际上,我甚至可以在值的类中添加<code>__format__</code>方法。但是,在该方法中,如何检查给定的格式规范是否是整数格式规范?不需要重新实现内置格式的格式规范解析器。</p> <p>编辑:这里有一个带有<code>__format__</code>和异常的解决方案。有更好的主意吗?</p> <pre><code>class MyIntegerTenClass: def __int__(self): return 10 def __str__(self): return 'ten' def __format__(self, spec): fmt = '{0:%s}'%spec try: return fmt.format(str(self)) except: return fmt.format(int(self)) ten = MyIntegerTenClass() print '%d, %02X, %s' % (ten, ten, ten) # ok, prints "10, 0A, ten" print '{0:d}, {0:02X}, {0}'.format(ten) # ok, prints "10, 0A, ten" </code></pre>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>它说10是一个字符串,你想把它格式化成一个数字。</p> <p>试着用石膏包起来:</p> <pre><code>>>> print '{0:d}, {0:02X}'.format(int(ten)) 10, 0A </code></pre>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
在python3中使用Scipy pearsonr函数
6 回答
在Python3中使用scipy对多个lorentzian进行数据拟合
1 回答
在Python3中使用Script=argv
2 回答
在python3中使用selenium webdriver进行未解析的回溯
7 回答
在python3中使用selenium和phantomjs的网页截图之前如何等待?
2 回答
在Python3中使用Selenium和Requests模块从网页获取文件
2 回答
在python3中使用SIGINT终止函数
10 回答
在Python3中使用SIGTERM时,允许进程完成而不是中断
4 回答
在python3中使用smtplib发送XML内容
2 回答
在python3中使用socket库(RFCOMM模式)重新连接蓝牙设备?
4 回答
在python3中使用sounddevice和numpy编写wav文件
3 回答
在python3中使用Sqlalchemy插入MySQL查找类型错误的原因
6 回答
在python3中使用sqlite、pandas和sqlalchemy很难让rollback工作
7 回答
在python3中使用SQLite的FTS3/4
5 回答
在Python3中使用struct.calcsize()和len()有区别吗?
3 回答
在python3中使用substring函数时发生TypeError
10 回答
在Python3中使用Tkinter entry小部件写入串行设备
9 回答
在python3中使用tkinter时,如何在每次按下函数时获得运行该函数的按钮?
5 回答
在python3中使用tkinter的子帧
4 回答
在Python3中使用tryexcept块时,如何避免使用未初始化的变量?
5 回答