简单分析和排序文件中的数据

时间:2018-11-09 05:13:29

标签: python file

对不起,如果之前已经回答过;我所做的搜索没有帮助。

我有一个存储数据的文件,

  

名称,号码

(尽管可能与问题无关,但我将不得不在该文件中添加条目。我知道该怎么做。)

我的问题是使用pythonic(?)分析数据并将其升序排序的方式。因此,如果文件是:

  

alex,30

     

bob,20

我必须添加条目

  

颂歌,25

文件应重写为

  

bob,20

     

carol,25

     

alex,30

我的第一个尝试是将整个文件存储为一个字符串(通过read()),然后按行分割以获取字符串列表,然后按顺序用逗号分割这些字符串,然后创建一个新的乐谱列表,然后进行排序,但这似乎不正确,并且失败了,因为一旦获得分数顺序,我就无法回头。

我无法使用该程序的库。

编辑:

我没有进行测试的第一次尝试是因为它所做的就是对分数列表进行排序。我不知道如何找回“条目”。

file = open("scores.txt" , "r")
data = file.read()
list_data = data.split()
data.append([name,score])
for i in range(len(list_data)):
    list_scores = list_scores.append(list_data[i][1])
list_scores = sorted(list_scores)

如您所见,这给了我一个分数的升序列表,但是我不知道从哪里可以对名字,分数条目列表进行排序。

3 个答案:

答案 0 :(得分:0)

您只需使用一些基本的字符串格式将排序后的条目写回到某个文件中即可:

with open('scores.txt') as f_in, open('file_out.txt', 'w') as f_out:
    entries = [(x, int(y)) for x, y in (line.strip().split(',') for line in f_in)]
    entries.append(('carol', 25))
    entries.sort(key=lambda e: e[1])
    for x, y in entries:
        f_out.write('{},{}\n'.format(x, y))

答案 1 :(得分:0)

我将假设您能够按照以下格式将数据放入.csv文件中:

Name,Number
John,20
Jane,25

然后,您可以使用csv.DictReader将其读入字典,其内容类似于所列示例:

with(open('name_age.csv', 'w') as csvfile:
    reader = csv.DictReader(csvfile)

并使用

写入
with(open('name_age.csv') as csvfile:
    writer = csv.DictWriter(csvfile)
    writer.writerow({'Name':'Carol','Number':25})

然后您可以使用python内置的operator对其进行排序,如图here

答案 2 :(得分:-1)

此函数将获取文件名并为您排序

def sort_file(filename):
    f = open(filename, 'r')
    text = f.read()
    f.close()
    lines = [i.split(',') for i in text.splitlines()]
    lines.sort(key=lambda x: x[1])
    lines = [', '.join(i) for i in lines]
    text = '\n'.join(lines)
    f = open(filename, 'w')
    f.write(text)
    f.close()