Python:对文本文件进行两次排序并拆分为不同的文件?

标签 python sorting split

如何首先按行长度排序,然后按字母顺序排序,然后按行长度拆分为单独的文件? 我有一个单词列表文件,如下所示:

a

actors

an

b

batter

but

我需要每个行长度一个文件(1.txt、2.txt),每个文件按字母顺序排序。这可以如何完成?

生成的文件应如下所示:

1.txt

a
b
...

2.txt

an
by
...

等等

最佳答案

from collections import defaultdict

OUTF = "{0}.txt".format

def sortWords(wordList):
    d = defaultdict(list)
    for word in wordList:
        d[len(word)].append(word)
    return d

def readWords(fname):
    with open(fname) as inf:
        return [word for word in (line.strip() for line in inf.readlines()) if word]

def writeWords(fname, wordList):
    wordList.sort()
    with open(fname, 'w') as outf:
        outf.write('\n'.join(wordList))

def main():
    for wordLen,wordList in sortWords(readWords('words.txt')).iteritems():
        writeWords(OUTF(wordLen), wordList)

if __name__=="__main__":
    main()

关于Python:对文本文件进行两次排序并拆分为不同的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5085767/

相关文章:

python - 我怎样才能摆脱 yield 并在我的代码中使用另一个函数

python - 在 Python 中通过 HTTP 请求发送 XML 的最简单方法?

java - 在不使用对象的情况下对不同数据类型的多个数组进行排序

Javascript sort() 不适用于 Chrome 中超过 10 个对象的数组

Php分割字符串转义配额

python - 如何在 Python 中将对象的所有属性复制到另一个对象?

c++ - 如何设计基于两个指标的排序算法?

Java ArrayList拆分每个对象

Python 用括号分割字符串

python - 阻止 Python 代码导入某些模块?