Python 2.7为什么我的字符串打印括号

时间:2016-07-07 19:42:24

标签: python python-2.7

我有一个变量如下:

weatherWind = int(round(c["windSpeed"])), "mph", bearing_to_direction(c["windBearing"])

目前windSpeedwindBearing是从Dark Sky天气API中获取的值。但是,当我打印出来时,它有括号和引号:

(8, 'mph', 'W')

我的所有其他变量都正确打印出来。我希望它打印出来像这样:

8 mph W

2 个答案:

答案 0 :(得分:3)

您创建了一个包含3个值的元组,一个整数,字符串'mph'和字符串'W'。如果您想创建一个字符串,请使用string formatting

weatherWind = '{:.0f} mph {}'.format(c["windSpeed"], bearing_to_direction(c["windBearing"]))

这会将风速和方位信息插入到已存在{..}的字符串中的mph个插槽中。 .0f格式化指令将您的浮点windspeed舍入为仅显示舍入的整数部分。

然后您可以打印该字符串而不需要任何其他引号或括号:

>>> bearing_to_direction = lambda d: 'NSWE'[d]
>>> c = {'windSpeed': 7.92, 'windBearing': 2}
>>> print '{:.0f} mph {}'.format(c["windSpeed"], bearing_to_direction(c["windBearing"]))
8 mph W
>>> c = {'windSpeed': 3.14, 'windBearing': 1}
>>> print '{:.0f} mph {}'.format(c["windSpeed"], bearing_to_direction(c["windBearing"]))
3 mph S

答案 1 :(得分:3)

有些令人困惑,

print a, b, c

完全不同
x = a, b, c
print x

执行print a, b, c时,Python会分别对每个对象调用str以获取对象的字符串表示形式并打印这些字符串,用空格分隔。

当您执行x = a, b, c时,您正在构建一个元组。此时不会产生任何字符串。执行print x后,Python会在元组上调用str并打印结果。元组的str表示与print a, b, c输出非常不同。

如果你想要一个看起来像print a, b, c输出的字符串,那么通用的方法是

x = ' '.join(map(str, [a, b, c]))

根据您的打印情况,可能有更方便的方法;例如,字符串格式化,如Martijn所建议。

相关问题