Python新行是排序列表问题
目前,我正试图通过分拣系统解决一些问题,正如您在回答我的其他问题时所说的那样。如果你需要的话,你也可以在那里找到一些信息 我这里的问题是,我想要一个整洁有序的分拣系统,而我似乎已经打破了这个系统 我有一个txt文件,其中包含以下数据: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
亚历克斯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)。一旦错误,总是错误:)