在Python中对文本文件的内容进行排序和对齐
在我的程序中,我有一个文本文件,可以读取和写入。但是,我希望以对齐和排序的方式显示文本文件的内容。目前的内容如下:在Python中对文本文件的内容进行排序和对齐,python,Python,在我的程序中,我有一个文本文件,可以读取和写入。但是,我希望以对齐和排序的方式显示文本文件的内容。目前的内容如下: Emily, 6 Sarah, 4 Jess, 7 这是我的代码,其中文本文件处于读取和打印状态: elif userCommand == 'V': print "High Scores:" scoresFile = open("scores1.txt", 'r') scores = scoresFile.read().split("\n") fo
Emily, 6
Sarah, 4
Jess, 7
这是我的代码,其中文本文件处于读取和打印状态:
elif userCommand == 'V':
print "High Scores:"
scoresFile = open("scores1.txt", 'r')
scores = scoresFile.read().split("\n")
for score in scores:
print score
scoresFile.close()
我是否必须将这些信息转换为列表才能执行此操作?如果是的话,我该怎么做呢
写入文件时,我在末尾添加了一个“\n”字符,因为每条记录都应打印在新行上
谢谢您可以使用模块,然后可以使用排序
进行排序
比如说,scores1.txt有以下内容
Richard,100
Michael,200
Ricky,150
Chaung,100
试验
看起来没有人回答你请求中的“对齐”部分。此外,还不清楚您是希望结果按名称字母顺序排序,还是按分数排序。在第一种情况下,按字母顺序(假设Python 2.6): 如果要按分数降序排列,只需将
名称\u scores.sort()
行更改为两行:
def getscore_int(name_score): return int(name_score[1])
names_scores.sort(key=getscore_int, reverse=True)
我没看见。提供示例输入和输出。我在上面添加了我的代码,用于读取和打印文本文件的内容。你能给我更多关于如何使用csv模块及其功能的信息吗?@Emily,添加了一些测试代码,如果你还有一些问题,请告诉我我仍然有问题,我很抱歉。我没法让它工作。每条记录也必须打印在新行上。@Emily,你的scores1.txt是什么样子的?你能发一部分吗?@Emily,要打印出来,你只需要循环一下it@Alex,也许是打字错误?行以“name_width=”开头,行以“score_width=”应该以a结尾“”,而不是“]”孙强——你说得对,tx发现了这一点。编辑以修复。按分数升序如何?是否可以在不定义函数的情况下获得升序?@Emily,升序与降序仅取决于是否向调用中添加
reverse=True
。将分数提取为int
以进行排序(这样11之前的2次排序等)确实需要一个函数,但如果您坚持(使代码不那么清晰),您可以不命名它(使用lambda
)。或者,您可以改为使用namescore[1]=int(namescore[1])
的循环,然后使用operator.itemgetter
(也不太清楚IMNSHO)。
with open("scores1.txt", 'r') as scoresFile:
names_scores = [[x.strip() for x in l.split(',', 1)] for l in scoresFile]
# compute column widths
name_width = max(len(name) for name, score in names_scores)
score_width = max(len(score) for name, score in names_scores)
# sort and print
names_scores.sort()
for name, score in names_scores:
print "%*s %*s" % (name_width, name, score_width, score)
def getscore_int(name_score): return int(name_score[1])
names_scores.sort(key=getscore_int, reverse=True)