Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python新行是排序列表问题_Python_Sorting_Replace_Lambda_Truncate - Fatal编程技术网

Python新行是排序列表问题

Python新行是排序列表问题,python,sorting,replace,lambda,truncate,Python,Sorting,Replace,Lambda,Truncate,目前,我正试图通过分拣系统解决一些问题,正如您在回答我的其他问题时所说的那样。如果你需要的话,你也可以在那里找到一些信息 我这里的问题是,我想要一个整洁有序的分拣系统,而我似乎已经打破了这个系统 我有一个txt文件,其中包含以下数据: 亚历克斯8 约翰4 里斯7号 亚历克斯8 丽贝卡2 **新的排序方法仍然不起作用** def sortNumeric(fileName, i, toWrite): with open(fileName, 'r') as inFile: pa

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

我这里的问题是,我想要一个整洁有序的分拣系统,而我似乎已经打破了这个系统

我有一个txt文件,其中包含以下数据:
亚历克斯8
约翰4
里斯7号
亚历克斯8
丽贝卡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
里斯7号
亚历克斯8
亚历克斯8

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

以防万一我的程序的其他部分搞砸了。。。事情就是这样


不确定替换(和截断)的目的是什么

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

>>> 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 2\nJohn 4\nReece 7\nAlex 8\nAlex 8'
>>> print(os.linesep.join(p[0] + ' ' + p[1] for p in pairs))
Rebbecca 2
John 4
Reece 7
Alex 8
Alex 8
>>>

不确定替换(和截断)的目的是什么

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

>>> 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 2\nJohn 4\nReece 7\nAlex 8\nAlex 8'
>>> print(os.linesep.join(p[0] + ' ' + p[1] for p in pairs))
Rebbecca 2
John 4
Reece 7
Alex 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)

问题出在这一行:

"\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)

就让整个
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()

就让整个
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()


更改为
f.write(str(pairs)+“\n”)
Done。还是有同样的问题写在一行上不要用记事本打开它。。。用记事本++或写字板打开它。。。或者除了记事本什么都不要。。。或者将其更改为
f.write(str(pairs)+“\r\n”)
同样的东西。在多个文本编辑器中打开!你的权利我没有仔细看你的代码,改成
f.write(str(pairs)+“\n”)
Done。还是有同样的问题写在一行上不要用记事本打开它。。。用记事本++或写字板打开它。。。或者除了记事本什么都不要。。。或者将其更改为
f.write(str(pairs)+“\r\n”)
同样的东西。在多个文本编辑器中打开!你的权利我没有仔细看你的代码,因为我的列表中有所有的“[[,”]]”字符。好像我不需要它们。而且我正在写入文件,所以我需要清除以前未排序的数据。打开一个带有“w”的文件将被截断,您不必手动执行所有“[[Reece,[0],…”怎么办etc不需要的字符如果输入文件看起来像你说的那样,这些字符就不存在了..替换是因为我有所有这些“[[,'']”字符我的列表中的字符。就像我不需要它们一样。而且我正在写入文件,所以我需要从中清除以前未排序的数据。打开一个带有“w”的文件将被截断,您不必手动执行该操作所有“[[Reece,[0],…”怎么办etc不需要的字符如果输入文件的外观与您所说的相同,则这些字符不在那里。这也是分配的内容。无论哪种方式,它都会执行相同的操作。
…对于成对的name\u分数,它不会更新成对,因此您确实需要分配。如果仍然不起作用,则会出现另一个问题,但您需要至少这是一个改变。这不是你应该做的,现在我的答案没有任何意义了。请恢复以前的版本,并在末尾添加新的代码。这也是分配的。无论哪种方式,它都做同样的事情。
…对于name\u pairs得分
来说,它不会更新pairs,所以你确实需要分配。如果它仍然l不起作用,然后还有另一个问题,但您至少需要此更改。这不是您应该做的,现在我的答案不再有意义。请还原以前的版本,并在末尾添加新代码。我将您的代码放在那里,它抛出了以下错误:ValueError:invalid literal for int()以10为基数:“1John”。它保存了第一个分数,然后当我运行程序进行第二次尝试时,它抛出了一个错误,我认为您的输入文件已损坏,因为您没有在方法中使用
写入
参数并覆盖输入文件(您没有使用
I
neighter)。一次出错,总是出错:)我将您的代码带到了那里,它抛出了以下错误:ValueError:invalid literal for int()以10为基数:“1John”。当我运行程序进行第二次尝试时,它保存了第一个分数。我认为您的输入文件已损坏,因为您没有在方法中使用
写入
参数并覆盖输入文件(您没有使用
I
neighter)。一旦错误,总是错误:)