这是我的.txt文件
-22, www 1213
-25, ttt 1234
-20, yyy 8883
我想根据第一个数字来排序。
我试过这样:
f = open('file_.txt','rb')
text = f.readlines()
sorted(text, key=lambda row: row[0], reverse=True)
但顺序是一样的。 使用排序行的变体
sorted(text, key=lambda row: float(row[0]), reverse=True)
我收到以下错误:
ValueError: could not convert string to float: -
我做错了什么?
答案 0 :(得分:2)
sorted(text, key=lambda row: float(row.split()[0].rstrip(',')), reverse=True)
问题是你按第一个字符排序,你想要第一个单词(不带逗号),你也可以用逗号分割。
答案 1 :(得分:1)
你的排序lambda不起作用的原因是因为row [0]是第一个字符,而不是第一个字符。您可以将其更改为row.split(',')[0],它将按预期工作。此外,使用with语句打开文件也是最佳做法。
OnChartGestureListener
在你的第二个例子中,出于同样的原因你得到了价值错误,你实际上是在说浮动(" -22,www 1213")。如果你真的想这样做那就是
with open('file_.txt','rb'):
text = f.readlines()
sorted(text, key=lambda row: row.split(',')[0], reverse=True)
如果可能有空格:
float(row.split(',')[0])