Python新行是排序列表问题



目前我正试图用排序系统解决一些问题,正如您在回答我的其他问题时所说的那样。如果你也需要的话,你可以在那里找到一些信息。

我的问题是,我想要一个秩序井然的分拣系统,而我似乎已经打破了这个系统。

我有一个txt文件,其中包含以下数据:
亚历克斯8
约翰4
Reece 7
亚历克斯8
Rebecca 2

**新的排序方法仍然不起作用**

def sortNumeric(fileName, i, toWrite):
    with open(fileName, 'r') as inFile:
        pairs = sorted((l.strip().split() for l in inFile),
                   key=operator.itemgetter(1))
with open(fileName, 'w') as outFile:
    outFile.write(os.linesep.join(p[0] + ' ' + p[1] for p in pairs))    

它当前将此写入文件:

Reece0John

甚至不包括约翰的分数或任何东西
我需要把它写成这样的文件:

丽贝卡2
约翰3
Reece 7
亚历克斯8
Alex 8

所以向下而不是在一条线上。如果对我的分拣系统有任何帮助或改进,我们将不胜感激。

以防我程序的其他部分搞砸了。。。这就是整件事!

代码

问题出在这一行:

"n".join(name_score[0] + " " + name_score[1] for name_score in pairs)

因为联接的结果没有分配给任何东西。

您应该在该行前面加上pairs =:

pairs = "n".join(name_score[0] + " " + name_score[1] for name_score in pairs)

不确定所有这些替换(和截断)是为了什么。。

import os
def mykey(item):
    int(item[1])
def sortNumeric(fileName, i, toWrite):
    with open(fileName, 'r') as inFile:
        pairs = sorted((l.strip().split() for l in inFile),
                       key=mykey)
    with open(toWrite, 'w') as outFile:
        outfile.write(os.linesep.join(p[0] + ' ' + p[1] for p in pairs))

作为一个简短的(非文件)示例。。

>>> infile = ['Alex 8', 'John 4', 'Reece 7', 'Alex 8', 'Rebbecca 2']
>>> pairs = sorted((l.strip().split() for l in infile),
...                    key=mykey)
>>> os.linesep.join(p[0] + ' ' + p[1] for p in pairs)
'Rebbecca 2nJohn 4nReece 7nAlex 8nAlex 8'
>>> print(os.linesep.join(p[0] + ' ' + p[1] for p in pairs))
Rebbecca 2
John 4
Reece 7
Alex 8
Alex 8
>>>

只要让整个str()的东西,你不需要它:

def sortNumeric(fileName, toWrite):
    pairs = [l.strip().split(" ") for l in open(fileName, "r")]
    pairs.sort(key = lambda name_score: int(name_score[1]))
    f = open(toWrite, "w")
    f.write("n".join(name_score[0] + " " + name_score[1] for name_score in pairs))
    f.close()

相关内容

  • 没有找到相关文章

最新更新