蟒蛇流行云未能正常工作

问题描述:

我构建了流行云但它无法正常工作。 txt文件是;蟒蛇流行云未能正常工作

1 Top Gear 
3 Scrubs 
3 The Office (US) 
5 Heroes 
5 How I Met Your Mother 
5 Legend of the Seeker 
5 Scrubs 
..... 

在我的流行云中,名称被写入他们的频率时间。例如,搜索者的传说被写入5次,并且它们的大小增加。每个单词应该写一次,大小必须根据流行号码(5)。但每一个字都应该写一次,其大小必须根据其受欢迎程度而定。我该如何解决它?

,也是我的程序应该提供条件:

条款以相同的频率通常显示在相同的颜色例如高尔夫和空手道。通常以不同的颜色显示不同的频率,例如篮球,板球和曲棍球。在每个云的底部输出用于在云中显示值的颜色的频率/计数。

我的代码在这里。

#!/usr/bin/python 
import string 

def main(): 
    # get the list of tags and their frequency from input file 
    taglist = getTagListSortedByFrequency('tv.txt') 
    # find max and min frequency 
    ranges = getRanges(taglist) 
    # write out results to output, tags are written out alphabetically 
    # with size indicating the relative frequency of their occurence 
    writeCloud(taglist, ranges, 'tv.html') 

def getTagListSortedByFrequency(inputfile): 
    inputf = open(inputfile, 'r') 
    taglist = [] 
    while (True): 
     line = inputf.readline()[:-1] 
     if (line == ''): 
      break 
     (count, tag) = line.split(None, 1) 
     taglist.append((tag, int(count))) 
    inputf.close() 
    # sort tagdict by count 
    taglist.sort(lambda x, y: cmp(x[1], y[1])) 
    return taglist 

def getRanges(taglist): 
    mincount = taglist[0][1] 
    maxcount = taglist[len(taglist) - 1][1] 
    distrib = (maxcount - mincount)/4; 
    index = mincount 
    ranges = [] 
    while (index <= maxcount): 
     range = (index, index + distrib-1) 
     index = index + distrib 
     ranges.append(range) 
    return ranges 

def writeCloud(taglist, ranges, outputfile): 
    outputf = open(outputfile, 'w') 
    outputf.write("<style type=\"text/css\">\n") 
    outputf.write(".smallestTag {font-size: xx-small;}\n") 
    outputf.write(".smallTag {font-size: small;}\n") 
    outputf.write(".mediumTag {font-size: medium;}\n") 
    outputf.write(".largeTag {font-size: large;}\n") 
    outputf.write(".largestTag {font-size: xx-large;}\n") 
    outputf.write("</style>\n") 
    rangeStyle = ["smallestTag", "smallTag", "mediumTag", "largeTag", "largestTag"] 
    # resort the tags alphabetically 
    taglist.sort(lambda x, y: cmp(x[0], y[0])) 
    for tag in taglist: 
     rangeIndex = 0 
     for range in ranges: 
      url = "http://www.google.com/search?q=" + tag[0].replace(' ', '+') + "+site%3Asujitpal.blogspot.com" 
      if (tag[1] >= range[0] and tag[1] <= range[1]): 
       outputf.write("<span class=\"" + rangeStyle[rangeIndex] + "\"><a href=\"" + url + "\">" + tag[0] + "</a></span> ") 
       break 
      rangeIndex = rangeIndex + 1 
    outputf.close() 

if __name__ == "__main__": 
    main() 
+3

如果你的问题是这样紧急,为什么不花时间正确格式化,以便它可读?那么也许有人可能会帮助你。 – 2010-10-23 13:33:28

+4

你也没有说过它做错了什么。 – 2010-10-23 13:47:23

+1

他的代码来自http://sujitpal.blogspot.com/2007/04/building-tag-cloud-with-python.html,如果有人关心它是如何工作的。 – Mark 2010-10-23 13:51:17

我不知道这可以通过颜色分类,但只需要4行代码来生成运行的代码的目录标签云。 https://github.com/atizo/PyTagCloud