欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于python3生成標(biāo)簽云代碼解析

 更新時(shí)間:2020年02月18日 14:43:35   作者:TTyb  
這篇文章主要介紹了基于python3生成標(biāo)簽云代碼解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

這篇文章主要介紹了基于python3生成標(biāo)簽云代碼解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

標(biāo)簽云是現(xiàn)在大數(shù)據(jù)里面最喜歡使用的一種展現(xiàn)方式,其中在python3下也能實(shí)現(xiàn)標(biāo)簽云的效果,貼圖如下:

-------------------進(jìn)入正文---------------------

首先要安裝以下幾個(gè)庫:

#!/usr/bin/python3.4
# -*- coding: utf-8 -*-
# http://www.lfd.uci.edu/~gohlke/pythonlibs/#cx_freeze
# 萬能倉庫下載pygame
# pip3下載simplejson

還有最重要的庫:

pip3 install pytagcloud

或者去官網(wǎng)下載:

https://pypi.python.org/pypi/pytagcloud/

安裝完畢,利用官網(wǎng)的例子來做:

from pytagcloud import create_tag_image, make_tags
from pytagcloud.lang.counter import get_tag_counts

YOUR_TEXT = "A tag cloud is a visual representation for text data, typically\
used to depict keyword metadata on websites, or to visualize free form text."

tags = make_tags(get_tag_counts(YOUR_TEXT), maxsize=120)

create_tag_image(tags, 'cloud_large.png', size=(900, 600), fontname='Lobster')

果斷報(bào)錯(cuò):

Traceback (most recent call last):
 File "D:/code/pythonwork/Text.py", line 96, in <module>
  tags = make_tags(get_tag_counts(YOUR_TEXT), maxsize=120)
 File "C:\Python34\lib\site-packages\pytagcloud\lang\counter.py", line 25, in get_tag_counts
  return sorted(counted.iteritems(), key=itemgetter(1), reverse=True)
AttributeError: 'dict' object has no attribute 'iteritems'

看了發(fā)現(xiàn)問題出在庫中的:

# counter.py
return sorted(counted.iteritems(), key=itemgetter(1), reverse=True)

原來是python3.4不支持寫法:

在Python2.x中,items( )用于 返回一個(gè)字典的拷貝列表【Returns a copy of the list of all items (key/value pairs) in D】,占額外的內(nèi)存。

iteritems() 用于返回本身字典列表操作后的迭代【Returns an iterator on all items(key/value pairs) in D】,不占用額外的內(nèi)存。

Python 3.x 里面,iteritems() 和 viewitems() 這兩個(gè)方法都已經(jīng)廢除了,而 items() 得到的結(jié)果是和 2.x 里面 viewitems() 一致的。在3.x 里 用items()替換iteritems() ,可以用于 for 來循環(huán)遍歷。

但是當(dāng)我換成:

# counter.py
return sorted(counted.items(), key=itemgetter(1), reverse=True)

發(fā)現(xiàn)運(yùn)行并沒有錯(cuò)誤,但是沒有生成標(biāo)簽云啊,一遍一遍打印出來,終于找到問題了:

	
from pytagcloud import create_tag_image

這個(gè)是為了生成一個(gè)元組的東西:

# counts =[('cloud', 3),
# ('words', 2),
# ('code', 1),
# ('word', 1),
# ('appear', 1)]

但是python3里面的items()是達(dá)不到這個(gè)效果的,所以我就自己寫吧。

讀取txt文件,將每一行都按照空格劃分成一個(gè)個(gè)數(shù)組的元素:

arr = []
 file = open('../tagcloud/tag_file.txt', 'r')
 data = file.read().split('\r\n')
 for content in data:
  contents = validatecontent(content).split()
  for word in contents:
    arr.append(word)
['BAISC', 'Python', 'BASICA', 'GVBASIC', 'GWBASIC', 'Python', 'ETBASIC', 'QBASIC', 'Quick', 'Basic', 'Turbo', 'Basic', 'True', 'Python', 'java', 'Basic', 'Visual', 'Basic', 'Visual', 'Basic', 'Net', 'Power', 'Basic', 'Python', 'java', 'SQL', 'VB', 'Small', 'Basic', 'Free', 'Basic', 'DarkBASIC', 'VBScript', 'Visual', 'Basic', 'For', 'ApplicationsVBA', 'REALbasic', 'C', 'C', 'Turbo', 'C', 'Python', 'java', 'SQL', 'VB', 'PHP', 'HTML', 'Borland', 'C', 'C', 'Builder', 'CCLI', 'Python', 'java', 'ObjectiveC', 'C#', 'Microsoft', 'Visual', 'C', 'Pascal', 'Delphi', 'Turbo', 'Python', 'java', 'SQL', 'VB', 'PHP', 'HTML', 'Pascal', 'Object', 'Pascal', 'Free', 'Pascal', 'Lazarus', 'FORTRAN', 'MATLAB', 'Scilab', 'GNU', 'Octave', 'R', 'SPlus', 'Mathematica', 'Maple', 'Python', 'java', 'SQL', 'VB', 'PHP', 'HTML', 'Julia', 'xBaseClipper', 'Visual', 'FoxPro', 'SQLPLSQL', 'TSQL', 'SQLPSM', 'LINQ', 'Xquer', 'Lua', 'Python', 'java', 'SQL', 'VB', 'Perl', 'PHP', 'Python', 'Ruby', 'ASP', 'JSP', 'TclTk', 'VBScript', 'AppleScript', 'AAuto', 'ActionScript', 'DMDScript', 'ECMAScript', 'JavaScript', 'JScript', 'TypeScript', 'sh', 'bash', 'Python', 'java', 'SQL', 'VB', 'PHP', 'HTML', 'sed', 'awk', 'PowerShell', 'csh', 'tcsh', 'ksh', 'zsh', 'XMLSVG', 'XML', 'Schema', 'Python', 'java', 'XSLT', 'XHTML', 'MathML', 'XAML', 'SSML', 'SGML', 'HTML', 'Python', 'java', 'SQL', 'VB', 'Curl', 'SVG', 'XML', 'Schema', 'XSLT', 'XHTML', 'MathML', 'XAML', 'SSML', 'Java', 'Jython', 'JRuby', 'JScheme', 'Groovy', 'Kawa', 'Scala', 'Clojure', 'ALGOL', 'APLJ', 'Ada', 'Falcon', 'Forth', 'Io', 'MUMPS', 'PLI', 'PostScript', 'REXX', 'SAC', 'Self', 'Simula', 'Swift', 'IronPython', 'IronRuby', 'COBOL', 'Python', 'java', 'SQL', 'VB', 'PHP', 'HTML']

其中validatecontent是起初非法字符的函數(shù):

# 去除內(nèi)容中的非法字符 (Windows)
def validatecontent(content):
  # '/\:*?"<>|'
  rstr = r"[\/\\\:\*\?\"\<\>\|\.\*\+\-\(\)\"\'\(\)\!\?\“\”\,\。\;\:\{\}\{\}\=\%\*\~\·]"
  new_content = re.sub(rstr, "", content)
  return new_content

對(duì)每一個(gè)元素都來個(gè)計(jì)數(shù):

from collections import Counter
counts = Counter(arr).items()
print(counts)

效果出來了:

dict_items([('For', 1), ('SQL', 8), ('JRuby', 1), ('Builder', 1), ('HTML', 6), ('LINQ', 1), ('BAISC', 1), ('BASICA', 1), ('PHP', 6), ('Octave', 1), ('csh', 1), ('PostScript', 1), ('awk', 1), ('Ruby', 1), ('AppleScript', 1), ('Object', 1), ('java', 11), ('TclTk', 1), ('Xquer', 1), ('ksh', 1), ('zsh', 1), ('ETBASIC', 1), ('AAuto', 1), ('Borland', 1), ('SVG', 1), ('Jython', 1), ('Simula', 1), ('IronPython', 1), ('Python', 14), ('Microsoft', 1), ('ActionScript', 1), ('XHTML', 2), ('REXX', 1), ('COBOL', 1), ('Scilab', 1), ('Ada', 1), ('Basic', 9), ('GVBASIC', 1), ('ECMAScript', 1), ('TypeScript', 1), ('Falcon', 1), ('Clojure', 1), ('ASP', 1), ('ALGOL', 1), ('XMLSVG', 1), ('GWBASIC', 1), ('VBScript', 2), ('CCLI', 1), ('Lazarus', 1), ('Julia', 1), ('JSP', 1), ('PowerShell', 1), ('IronRuby', 1), ('Power', 1), ('FORTRAN', 1), ('Self', 1), ('Perl', 1), ('Small', 1), ('FoxPro', 1), ('REALbasic', 1), ('GNU', 1), ('Mathematica', 1), ('True', 1), ('Visual', 5), ('JScheme', 1), ('Maple', 1), ('Quick', 1), ('Turbo', 3), ('SAC', 1), ('JScript', 1), ('APLJ', 1), ('sh', 1), ('Kawa', 1), ('Pascal', 4), ('TSQL', 1), ('SPlus', 1), ('C', 6), ('xBaseClipper', 1), ('tcsh', 1), ('SQLPSM', 1), ('ApplicationsVBA', 1), ('SSML', 2), ('R', 1), ('Groovy', 1), ('XSLT', 2), ('MUMPS', 1), ('bash', 1), ('DarkBASIC', 1), ('SGML', 1), ('XAML', 2), ('VB', 8), ('Curl', 1), ('Schema', 2), ('MATLAB', 1), ('MathML', 2), ('Lua', 1), ('Net', 1), ('ObjectiveC', 1), ('JavaScript', 1), ('Java', 1), ('Io', 1), ('Free', 2), ('Delphi', 1), ('sed', 1), ('XML', 2), ('Forth', 1), ('C#', 1), ('SQLPLSQL', 1), ('QBASIC', 1), ('DMDScript', 1), ('Swift', 1), ('Scala', 1), ('PLI', 1)])

最后直接代入進(jìn)去就行了:

 tags = make_tags(counts, maxsize=120)
 create_tag_image(tags, 'cloud_large.png', size=(900, 600), fontname='Lobster')

具體的修正需要自己慢慢去琢磨了,比如文字大小、圖片大小、背景顏色等等。

到這里標(biāo)簽云是算完成了的,但是卻是不支持中文,原因是沒有合適的ttf字體文件,準(zhǔn)備一個(gè) ttf 中文字體,如MicrosoftYaHei.ttf ,將其移動(dòng)到

# C:\Python34\Lib\site-packages\pytagcloud\fonts

接著就是更改fonts.json文件,按照樣式添加類似于css的東西:

{
    "name": "MicrosoftYaHei",
    "ttf": "MicrosoftYaHei.ttf",
    "web": "none"
  }

注意前后的逗號(hào)就行。最后將這里的代碼改一下:

create_tag_image(tags, 'cloud_large.png', size=(900, 600), fontname='MicrosoftYaHei')

運(yùn)行,搞定!中文效果圖:

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 跟老齊學(xué)Python之for循環(huán)語句

    跟老齊學(xué)Python之for循環(huán)語句

    看這個(gè)標(biāo)題,有點(diǎn)匪夷所思嗎?為什么for是難以想象的呢?因?yàn)樵趐ython中,它的確是很常用而且很強(qiáng)悍,強(qiáng)悍到以至于另外一個(gè)被稱之為迭代的東西,在python中就有點(diǎn)相形見絀了。在別的語言中,for的地位從來沒有如同python中這么高的。
    2014-10-10
  • python?Tkinter實(shí)例詳解

    python?Tkinter實(shí)例詳解

    tkinter(Tk?interface)是Python的標(biāo)準(zhǔn)GUl庫,支持跨平臺(tái)的GUl程序開發(fā)。tkinter適合小型的GUl程序編寫,也特別適合初學(xué)者學(xué)習(xí)GUl編程,這篇文章主要介紹了python?Tkinter詳解,需要的朋友可以參考下
    2023-03-03
  • Python3實(shí)現(xiàn)的畫圖及加載圖片動(dòng)畫效果示例

    Python3實(shí)現(xiàn)的畫圖及加載圖片動(dòng)畫效果示例

    這篇文章主要介紹了Python3實(shí)現(xiàn)的畫圖及加載圖片動(dòng)畫效果,結(jié)合實(shí)例形式分析了Python3基于tkinter庫進(jìn)行圖片加載動(dòng)畫效果的相關(guān)實(shí)現(xiàn)與使用技巧,需要的朋友可以參考下
    2018-01-01
  • Python pandas如何獲取數(shù)據(jù)的行數(shù)和列數(shù)

    Python pandas如何獲取數(shù)據(jù)的行數(shù)和列數(shù)

    這篇文章主要介紹了Python pandas如何獲取數(shù)據(jù)的行數(shù)和列數(shù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python中Selenium上傳文件的幾種方式

    Python中Selenium上傳文件的幾種方式

    本文主要介紹了Python中Selenium上傳文件的幾種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • python對(duì)象與json相互轉(zhuǎn)換的方法

    python對(duì)象與json相互轉(zhuǎn)換的方法

    這篇文章主要介紹了python對(duì)象與json相互轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Python 靜態(tài)導(dǎo)入與動(dòng)態(tài)導(dǎo)入的實(shí)現(xiàn)示例

    Python 靜態(tài)導(dǎo)入與動(dòng)態(tài)導(dǎo)入的實(shí)現(xiàn)示例

    Python靜態(tài)導(dǎo)入和動(dòng)態(tài)導(dǎo)入是指導(dǎo)入模塊或模塊內(nèi)部函數(shù)的兩種方式,本文主要介紹了Python 靜態(tài)導(dǎo)入與動(dòng)態(tài)導(dǎo)入的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-05-05
  • Web服務(wù)器框架 Tornado簡介

    Web服務(wù)器框架 Tornado簡介

    Tornado Web Server 是使用Python編寫出來的一個(gè)極輕量級(jí)、高可伸縮性和非阻塞IO的Web服務(wù)器軟件,著名的 Friendfeed 網(wǎng)站就是使用它搭建的。
    2014-07-07
  • python實(shí)現(xiàn)猜數(shù)游戲

    python實(shí)現(xiàn)猜數(shù)游戲

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)猜數(shù)游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • Anaconda(miniconda)入門使用完全指南

    Anaconda(miniconda)入門使用完全指南

    Conda是一個(gè)管理版本和Python環(huán)境的工具,它使用起來非常容易,下面這篇文章主要給大家介紹了關(guān)于Anaconda(miniconda)入門使用的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友可以參考下
    2023-02-02

最新評(píng)論