python中的文本文件排序

时间:2014-08-25 09:33:53

标签: python sorting python-3.x

我有文本文件customer.text

Customer.text

3|jack|USA
1|Maria|China
2|Kaishik|India

我想用column1对此表进行排序。排序后应该看起来像这样

1|Maria|China
2|Kaishik|India
3|jack|USA

我是python中的新手我尝试了一些data.sort(data, key=lambda data: data[0])方法,但它并不适合我。我真的很担心这种排序功能。

4 个答案:

答案 0 :(得分:2)

您可以使用' pandas'包这些任务。

import pandas as pd
df = pd.read_csv('customer.txt',delimiter='|', header = None)
df.sort([0])

        0   1   2
   1    1   Maria   China
   2    2   Kaishik India
   0    3   jack    USA

答案 1 :(得分:1)

假设data是一个列表列表,第一个“列”是int的数字,您的排序应该有效。但请注意,您正在混合sortsorted的语法!

使用sort,您无需将data作为另一个参数传递;它隐含地作为self参数传递。只需使用data.sort(key=lambda d: d[0])就地data进行排序。如果要创建data的排序(浅)副本,请使用data2 = sorted(data, key=lambda d: d[0])

text = """3|jack|USA
1|Maria|China
2|Kaishik|India"""
data = [line.split("|") for line in text.splitlines()]
data = [[int(i), name, state] for i, name, state in data]
data.sort(key=lambda d: d[0])

在此之后,data[[1, 'Maria', 'China'], [2, 'Kaishik', 'India'], [3, 'jack', 'USA']]

答案 2 :(得分:0)

sort是一个列表方法,你没有传递列表,你调用列表上的方法。

 with open("in.txt") as f:
    data = f.readlines()
    data.sort(key=lambda x: int(x.split("|")[0]))
    print(data)

['1|Maria|China\n', '2|Kaishik|India\n', '3|jack|USA\n']

key=lambda x: int(x.split("|")[0])拆分|上的每一行,并根据第一个元素(即数字)进行排序。

如果要将更新的值写入文件:

with open("in.txt","r+") as f:
    data = f.readlines()
    data.sort(key=lambda x: int(x.split("|")[0]))
    f.seek(0) # go back to start of the file
    for line in data:
        f.write(line) # write new data

答案 3 :(得分:-1)

您只需对列表进行排序:

file = open("Customer.text", "r")
lines = file.readlines()
lines.sort()
file.close()

请参阅here