加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

文件读取和python中的for循环

发布时间:2020-12-20 11:33:56 所属栏目:Python 来源:网络整理
导读:我有这个文件: -01169-00134079-000... 我想对它们进行排序并将它们存储到文件中. 我读取文件将它们存储在列表中,对列表进行排序,然后将列表保存到文件中.问题是它从第二个-x开始. for line in file: temp_buffer = line.split() for i,word in enumerate(t
我有这个文件:

-0
1
16
9
-00
1
3
4
0
7
9
-000
...

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

我读取文件将它们存储在列表中,对列表进行排序,然后将列表保存到文件中.问题是它从第二个-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 = []

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

-0
1
9
16
-00
0
1
3
4
7
9
-000
....

解决方法

您可以使用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))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读