scores=open('scores.csv','r')
for score in scores.readlines():
score = score.strip()
rev=[]
for s in reversed(score[0:]):
rev.append(s)
print(rev)
这是我的代码,我要做的是来自scores.csv的打印反向列表
如果我在开始时打印scores
,结果将是:
['0.74,0.63,0.58,0.89\n', '0.91,0.89,0.78,0.99\n', '0.43,0.35,0.34,0.45\n', '0.56,0.61,0.66,0.58\n', '0.50,0.49,0.76,0.72\n', '0.88,0.75,0.61,0.78\n']
这看起来很正常,如果在删除列表中的所有score
之后打印\n
,结果将是:
0.74,0.63,0.58,0.89
0.91,0.89,0.78,0.99
0.43,0.35,0.34,0.45
0.56,0.61,0.66,0.58
0.50,0.49,0.76,0.72
0.88,0.75,0.61,0.78
看起来还是可以的,但是如果我在代码末尾打印,它会显示:
['9', '8', '.', '0', ',', '8', '5', '.', '0', ',', '3', '6', '.', '0', ',', '4', '7', '.', '0']
['9', '9', '.', '0', ',', '8', '7', '.', '0', ',', '9', '8', '.', '0', ',', '1', '9', '.', '0']
['5', '4', '.', '0', ',', '4', '3', '.', '0', ',', '5', '3', '.', '0', ',', '3', '4', '.', '0']
['8', '5', '.', '0', ',', '6', '6', '.', '0', ',', '1', '6', '.', '0', ',', '6', '5', '.', '0']
['2', '7', '.', '0', ',', '6', '7', '.', '0', ',', '9', '4', '.', '0', ',', '0', '5', '.', '0']
['8', '7', '.', '0', ',', '1', '6', '.', '0', ',', '5', '7', '.', '0', ',', '8', '8', '.', '0']
看起来像python将我的结果从十进制转换为整数,但是当我尝试使用float(s)
将其转换回时,它给了我一个错误。我想知道我的代码有什么问题吗?
答案 0 :(得分:0)
始终使用csv
模块读取csv文件。这个模块解析数据,根据逗号分割等等。
您的尝试只是逐行反转char。我将使用csv
模块将其完全重写,这将产生已由逗号分割的令牌(默认):
import csv
with open('scores.csv','r') as scores:
cr = csv.reader(scores)
rev = []
for row in cr:
rev.append(list(reversed(row))
不会将数据转换为浮点数,也就是说,我将循环理解为+浮点数转换
rev = [[float(x) for x in reversed(row)] for row in cr]
答案 1 :(得分:0)
在您的方法中,score
是一个字符串,因此它完全按照您的指示执行:逐字符颠倒整个行。您可以做两件事:
csv
模块读取CSV文件(推荐),获取浮点值列表,然后将其取反。mylist[::-1]
。对于数字2,它类似于:
score = score.strip()
temp = score.split(',')
temp_reversed = temp[::-1]
score_reversed = ','.join(temp_reversed)