2013-10-13 147 views
0
import operator 

def mkEntry(file1): 
    results = [] 
    for line in file1: 
     lst = line.rstrip().split(",") 
     lst[2] = int(lst[2]) 
     results.append(lst) 
    return print(sorted(results, key=operator.itemgetter(1,2))) 


def main(): 
    openFile = 'names/' + 'yob' + input("Enter the Year: ") + '.txt' 
    file1 = open(openFile) 
    mkEntry(file1) 

main() 

文件:Python的打印字符串結果

Emily,F,25021 
Emma,F,21595 
Madison,F,20612 
Olivia,F,16100 
Joaquin,M,711 
Maurice,M,711 
Kade,M,701 
Rodrigo,M,700 
Tate,M,699 

如何打印出來的結果是這樣的:1。 名(性別):數字 相反[「名稱」的,「性別',數字]

我麻煩做字符串的事情。它不會給我很好的輸出。任何幫助?

感謝

回答

2

return print(sorted(results, key=operator.itemgetter(1,2)))沒有做你期望它是什麼。

因爲print()回報None,你的函數將return None。擺脫了print語句(如果你要打印的線,只要把它在返回之前)

然後你就可以在你的main()功能做:

for person in mkEntry(file1): 
    print("1. {0} ({1}): {2}".format(*person)) 
+0

我固定它。我這樣做了,它打印出這個:'''Shelly','F',975]'而不是'1。 Shelly(F):975' – Singh2013

+0

@ Singh2013我編輯了我的答案 – TerryA

+0

編輯:我明白了。謝啦!!! – Singh2013