2016-03-29 15 views
-2

Aşağıdaki kod, bir metin dosyasındaki her kelimenin oluşumunu listeler. Şimdi benzer bir çıktı dosyasını açmak istiyorum, ama ayrı bir çıktı dosyasında alfabetik sırayla. İlk adımım ne olurdu?Python: Ayrı bir çıktı dosyasını nasıl açıyorsunuz?

print("What's the name of the file?") 
    file_name = input() 
    file = open(file_name, 'r') 
    wordcount={} 
    for word in file.read().split(): 
     if word not in wordcount: 
      wordcount[word] = 1 
     else: 
      wordcount[word] += 1 
    for a,b in wordcount.items(): 
     print(a, b) 
+0

Kullanılan dil ?? –

+0

@ MM Özür dilerim, Python dildir. – rez

+0

Soruyu biraz daha netleştirebilir misiniz? Özellikle alfabetik sırayla ne yapmaya çalışıyorsunuz – Natecat

cevap

1

İlk adımınız kelimeleri alfabetik sırayla açıkça sıralamak olacaktır. Bunu yapmak için sıralama yöntemlerinde yerleşik pitonları kullanabilirsiniz. Öncelikle, words=wordcount.keys() kullanarak sözcük listeniz olan sözlüğünüzdeki anahtarların listesini alın ve bu sözcük listesini alfabetik olarak words.sort() gibi bir şeyi kullanarak sıralayabilirsiniz.

1
txt='Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.' 
wordcount={} 
for word in txt.split(): 
    if word not in wordcount: 
     wordcount[word] = 1 
    else: 
     wordcount[word] += 1 

list1=[]   
for a,b in wordcount.items(): 
    # print(a, b) 
    list1.append([ a.lower(),b]) 

print sorted(list1, key=lambda x: x[0])  

Çıktı:

[['ad', 1], ['adipiscing', 1], ['aliqua.', 1], ['aliquip', 1], ['amet,', 1], ['anim', 1], ['aute', 1], ['cillum', 1], ['commodo', 1], ['consectetur', 1], ['consequat.', 1], ['culpa', 1], ['cupidatat', 1], ['deserunt', 1], ['do', 1], ['dolor', 2], ['dolore', 2], ['duis', 1], ['ea', 1], ['eiusmod', 1], ['elit,', 1], ['enim', 1], ['esse', 1], ['est', 1], ['et', 1], ['eu', 1], ['ex', 1], ['excepteur', 1], ['exercitation', 1], ['fugiat', 1], ['id', 1], ['in', 3], ['incididunt', 1], ['ipsum', 1], ['irure', 1], ['labore', 1], ['laboris', 1], ['laborum.', 1], ['lorem', 1], ['magna', 1], ['minim', 1], ['mollit', 1], ['nisi', 1], ['non', 1], ['nostrud', 1], ['nulla', 1], ['occaecat', 1], ['officia', 1], ['pariatur.', 1], ['proident,', 1], ['qui', 1], ['quis', 1], ['reprehenderit', 1], ['sed', 1], ['sint', 1], ['sit', 1], ['sunt', 1], ['tempor', 1], ['ullamco', 1], ['ut', 1], ['ut', 2], ['velit', 1], ['veniam,', 1], ['voluptate', 1]] 
0

Nasıl anahtarlarını temel sözlüğü sıralamak için böyle bir şey collections kullanmaya çalışıyor ve yapmayı.

import collections 
wordcount = collections.OrderedDict(sorted(wordcount.items())) 

Ardından, her birini dosyaya yazıp bir dosyaya yazabilirsiniz.

outPath = "PathToOutFile" 

outFile = open(outPath,"w"); 
for a,b in wordcount.items(): 
    outFile.write("{:s} {:d}\n".format(a,b)) 
İlgili konular