在Python中排序文本文件

时间:2016-04-15 15:26:16

标签: python sorting text-files

这是我的.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: -

我做错了什么?

2 个答案:

答案 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])