文件读取和python中的for循环

bil*_*ill 3 python for-loop list

我有这个文件:

-0
1
16
9
-00
1
3
4
0
7
9
-000
...
Run Code Online (Sandbox Code Playgroud)

我想对它们进行排序并将它们存储到文件中.

我读取文件将它们存储在列表中,对列表进行排序,然后将列表保存到文件中.问题是它从第二个-x开始.

 for line in file:
        temp_buffer = line.split()
        for i,word in enumerate(temp_buffer):
            if "-" not in word:
                if word in index_dict:
                    l1.append(word)
                else:
                    l1.append(function(word))
            else:
                l1.append(word)
                l1.sort()
                print(l1 , file=testfile)
                del l1
                l1 = []
Run Code Online (Sandbox Code Playgroud)

所以第一个循环它转到else语句并且只存储第一个-0而没有-0和-00之间的单词.我该怎么解决这个问题?我想输出是这样的:

-0
1
9
16
-00
0
1
3
4
7
9
-000
....
Run Code Online (Sandbox Code Playgroud)

Jon*_*nts 7

您可以使用itertools.groupby"分区"将数据分组到以行开头的行之间-.在哪里开始-写出行,否则,写出排序的行,例如:

from itertools import groupby

with open('input') as fin, open('output', 'w') as fout:
  for k, g in groupby(fin, lambda L: L.startswith('-')):
    if k:
      fout.writelines(g)
    else:
      fout.writelines(sorted(g, key=int))
Run Code Online (Sandbox Code Playgroud)