如何在Python中使用字符串的格式说明符

3

我想在字符串中使用格式说明符来处理数字

Alist = ["1,25,56.7890,7.8"]

tokens = Alist[0].split(',')

for number in tokens:
    print "%6.2f" %number ,

结果:它给我了一个错误。


在你的例子中,只需写print number而不是print "%6.2f" %number可能是最明显的解决方案,但你最终想要做什么(我猜你不只是想打印数字,对吗?)?你确定需要将字符串格式化为数字来实现你的目标吗?如果是这样,int()用于整数或float()用于浮点数应该可以解决问题。 - Sitses
1
尝试使用 print "%6.2f" % float(number) - Fredrik Pihl
或者查看https://dev59.com/1nRB5IYBdhLWcg3w9Lzn - lordkain
1
你有一个字符串,分割后得到一个字符串列表;如果要将这些字符串视为数字,则需要将它们转换为数字。 - Martijn Pieters
1个回答

3

TypeError: float argument required, not str

这个错误明显说明你正在尝试将一个字符串作为浮点数传递。

你需要将字符串值转换为浮点数:

for number in tokens: 
    print '{:6.2f}'.format(float(number))

注意 如果您使用的Python版本早于2.6,则无法使用format()函数。
您需要使用以下方法:

print '%6.2f' % (float(number),) # This is ugly.

这里是关于Python 2.7格式化示例的一些文档。


好的发现。我一定是复制了我的旧for循环。 - Mr. Polywhirl
没问题。我也修复了你的旧式代码(删除了 % 前面的句号)。 - Caleb Hattingh
format在Python 2.6中是可以使用的,但你不能省略数字参数,所以上面的例子必须写成这样:{0:6.2f}。我会建议将上述语句改写为format(float(number), '6.2f') - Jon Clements
1
作为一个C语言背景的开发者,format(value, format_spec)对我来说看起来很奇怪。 - Mr. Polywhirl
如果在第二个代码片段中有什么东西看起来不够美观,那就是显式元组符号表示法。当你说“早于2.6”时,你是指你不能执行'%6.2f' % float(number)吗?还是你不喜欢运算符本身的原因? - Alois Mahdal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接