现在我有了这样的代码:
for s,h,v,r in zip(lopullinen, yksilo, osallistumiset, pistemaarat):
tulostuksia.write(str(s) + ";".join(h) + ";" + str(r) + ";" + ";".join(str(v)) + "/7" + "\n")
它会产生这样的输出:
tunnus;nimi;sarja;juoksu-60m;pituushyppy;kuulantyonto;korkeushyppy;aitajuoksu-60m;seivashyppy;juoksu-1000m;kokonaispisteet;lajeja
101;Vertti Veteraaniurheilija;M70;709;651;750;806;850;759;801;5326;7/7
41;Severi Seitsenottelija;M;603;551;600;555;559;655;700;4223;7/7
42;Seppo Seitsenottelija;M;661;750;700;610;505;502;700;4428;7/7
43;Ylermi Yleisurheilija;M;603;601;700;655;661;555;500;4275;7/7
60;K. Keskeyttäjä;M40;603;601;-;-;-;-;-;1204;2/7
61;Yrjänä Yleisurheilija;M40;559;500;650;701;603;655;650;4318;7/7
但我希望这些数字是浮点型的。像这样:
101;Vertti Veteraaniurheilija;M70;709.0;651.0;750.0;806.0;850.0;759.0;801.0;5326;7/7
千个数字来自包含类中数字的列表。如果我把它改成float(当添加到列表中时),然后从上面的for循环改成“;”。join(str(h))。它给我的输出是“;”在每个数字(7;0;9;0;等等)之间,如果我不把str(h)放在那里,它会给出“TypeError:sequence item 0:expected str instance,float found”。你知道吗
有没有一个简单的方法让这些数字变成709.0而不是709。你知道吗
使用
而不是简单的
但是
str(value)
应该已经给了你'4.0'
,如果value
一开始是一个浮点数的话。所以也许你需要先把这个值转换成一个浮点数:另外,如果您需要保留
-
值,您还必须检查这些值。所以在你的例子中,使用如果
h
是一个列表[709.0, 651.0]
,那么str(h)
会给你"[709.0, 651.0]"
,';'.join(str(h))
,正如你所看到的,会迭代字符串中的字符,而不是列表中的值。你知道吗相反,试试
';'.join(map(str, h))
。这会将列表中的每个项分别转换为字符串(无论是'-'
还是float
),然后join
是字符串的结果iterable/list(取决于Python版本)。你知道吗示例:
相关问题 更多 >
编程相关推荐