我通过使用从 sql 查询中检索数据
bounds = cursor.fetchone()
我得到一个像这样的元组:
(34.2424, -64.2344, 76.3534, 45.2344)
我想要一个像 34.2424 -64.2344 76.3534 45.2344
这样的字符串
是否存在可以做到这一点的功能?
原文由 Below the Radar 发布,翻译遵循 CC BY-SA 4.0 许可协议
我通过使用从 sql 查询中检索数据
bounds = cursor.fetchone()
我得到一个像这样的元组:
(34.2424, -64.2344, 76.3534, 45.2344)
我想要一个像 34.2424 -64.2344 76.3534 45.2344
这样的字符串
是否存在可以做到这一点的功能?
原文由 Below the Radar 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您愿意使用 *
魔术,您还可以使用 str.format()
生成任意格式。要处理这个问题的特定情况,使用单个分隔符实际上有点麻烦:
>>> bounds = (34.2424, -64.2344, 76.3534, 45.2344)
>>> "{} {} {} {}".format(*bounds)
34.2424 -64.2344 76.3534 45.2344
处理任何长度的更强大的版本,如 join
,是:
>>> len(bounds)*"{} ".format(*bounds)
但增加的价值是,如果您想将格式扩展到更多涉及的内容,您可以选择:
>>> "{} --> | {:>10} | {:>10} | {:>10} |".format(*bounds)
34.2424 --> | -64.2344 | 76.3534 | 45.2344 |
从这里开始,您的字符串 格式化选项 非常多样化。
原文由 mattsilver 发布,翻译遵循 CC BY-SA 3.0 许可协议
2 回答5.2k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答868 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
使用
str.join()
:您必须在此处使用 map(它将元组中的所有项目转换为字符串),否则您将得到
TypeError
。关于
map()
函数的一些说明:map(str, (34.2424, -64.2344, 76.3534, 45.2344)
相当于[str(i) for i in (34.2424, -64.2344, 76.3534, 45.2344)]
。它比使用列表理解快一点点:
如对此答案的评论中所示,
str.join()
可以采用生成器而不是列表。通常情况下,这会更快,但在这种情况下,它会 _更慢_。如果我要这样做:
它会比使用
map()
慢。区别在于imap()
返回一个生成器,而map()
返回一个列表(在python 3中它返回一个生成器)如果我要这样做:
由于 此处 解释的原因,它会比将 列表 推导放在方括号中慢。
在您(OP)的情况下,这两个选项都无关紧要,因为这里的性能似乎并不是什么大问题。但是,如果您曾经处理过大型浮点数/整数元组,那么现在您知道使用什么来获得最大效率了:)。