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