我有文本文件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])
方法,但它并不适合我。我真的很担心这种排序功能。
答案 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
的数字,您的排序应该有效。但请注意,您正在混合sort
和sorted
的语法!
使用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