lzc527054845 发表于 2019-1-27 20:01

【笔记】 文本排序

#!/user/bin/env python
# -*- coding: utf-8 -*-
"""
要处理的文本:
1 男 25
3 女 66
5 男 85
0 男 12
2 女 56
方法:
处理每行有多个数据 规律性的文本   根据某一行进行排序
先把每一行变成一个列表添加到一个新列表中[[],[],[],[]]   再根据每个列表的某一列值进行排序
"""


new_list = []
file = open("info.txt", "r")
data = file.readlines()
for line in data:   # 把每一行用空格切割返回一个列表
    list1 = line.split(" ")
    new_list.append(list1)
    file.close()


"""
根据数字大小进行排序
使用lambda函数指定第几列用来排序
eval() 把字符创转换为数字
reverse = True 降序
reverse = False 升序
"""
new_list.sort(key=lambda x: eval(x[0]), reverse=False)

file1 = open("1.text", "w")
for i in new_list:
    file1.write(str(i)+"\n")
file1.close()




"""
根据汉字进行排序:
把汉字设置成对应的数字进行排序
"""


def return_num(x):
    if x == "男":
      return 1
    elif x == "女":
      return 2


new_list.sort(key=lambda a: return_num(a[1]), reverse=True)
file2 = open("2.text", "w")
for i in new_list:
    file2.write(str(i)+"\n")
file2.close()

6767 发表于 2019-1-28 00:26

小兄弟,稍稍说一句,默认情况下第一行这个shebang
#!/user/bin/env python 应该是
#!/usr/bin/env python
多个e强迫症很难受

lzc527054845 发表于 2019-1-28 14:35

6767 发表于 2019-1-28 00:26
小兄弟,稍稍说一句,默认情况下第一行这个shebang
#!/user/bin/env python 应该是
#!/usr/bin/env pyth ...

多谢提醒{:1_893:}
页: [1]
查看完整版本: 【笔记】 文本排序