最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于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è)庫(kù):

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

還有最重要的庫(kù):

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)問題出在庫(kù)中的:

# 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)行,搞定!中文效果圖:

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

相關(guān)文章

  • Python內(nèi)置函數(shù)delattr的具體用法

    Python內(nèi)置函數(shù)delattr的具體用法

    本篇文章主要介紹了Python內(nèi)置函數(shù)delattr的具體用法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-11-11
  • python實(shí)現(xiàn)自動(dòng)化上線腳本的示例

    python實(shí)現(xiàn)自動(dòng)化上線腳本的示例

    今天小編就為大家分享一篇python實(shí)現(xiàn)自動(dòng)化上線腳本的示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • 如何使用Python代碼創(chuàng)建表格

    如何使用Python代碼創(chuàng)建表格

    如果能夠?qū)⑽覀兊臒o序數(shù)據(jù)快速組織成更易讀的格式,對(duì)于數(shù)據(jù)分析非常有幫助,下面這篇文章主要介紹了關(guān)于如何使用Python代碼創(chuàng)建表格的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • Pycharm打開.py文件和項(xiàng)目的幾種實(shí)現(xiàn)方式

    Pycharm打開.py文件和項(xiàng)目的幾種實(shí)現(xiàn)方式

    這篇文章主要介紹了Pycharm打開.py文件和項(xiàng)目的幾種實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • python通過openpyxl生成Excel文件的方法

    python通過openpyxl生成Excel文件的方法

    這篇文章主要介紹了python通過openpyxl生成Excel文件的方法,實(shí)例分析了openpyxl的安裝與使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-05-05
  • 怎么使用python繪制3D瀑布圖

    怎么使用python繪制3D瀑布圖

    這篇文章主要介紹了怎么使用python繪制3D瀑布圖的相關(guān)資料,瀑布圖是由麥肯錫顧問公司所獨(dú)創(chuàng)的圖表類型,因?yàn)樾嗡破俨剂魉Q之為瀑布圖(Waterfall Plot),文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-09-09
  • CentOS7下安裝python3.6.8的教程詳解

    CentOS7下安裝python3.6.8的教程詳解

    這篇文章主要介紹了CentOS7下安裝python3.6.8的教程,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-01-01
  • python實(shí)現(xiàn)簡(jiǎn)單淘寶秒殺功能

    python實(shí)現(xiàn)簡(jiǎn)單淘寶秒殺功能

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡(jiǎn)單淘寶秒殺功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • python 基于opencv去除圖片陰影

    python 基于opencv去除圖片陰影

    這篇文章主要介紹了python 基于opencv去除圖片陰影的方法,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-01-01
  • Python實(shí)現(xiàn)利用最大公約數(shù)求三個(gè)正整數(shù)的最小公倍數(shù)示例

    Python實(shí)現(xiàn)利用最大公約數(shù)求三個(gè)正整數(shù)的最小公倍數(shù)示例

    這篇文章主要介紹了Python實(shí)現(xiàn)利用最大公約數(shù)求三個(gè)正整數(shù)的最小公倍數(shù),涉及Python數(shù)學(xué)運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下
    2017-09-09

最新評(píng)論

神木县| 旬邑县| 聂荣县| 红桥区| 西贡区| SHOW| 嵊泗县| 南丹县| 临夏市| 定南县| 汝城县| 天水市| 梅河口市| 彭州市| 麻城市| 邵阳市| 永福县| 永宁县| 天祝| 离岛区| 北流市| 二连浩特市| 科技| 岫岩| 榆社县| 托克逊县| 栾城县| 琼结县| 明溪县| 黄骅市| 奎屯市| 淮南市| 三江| 上蔡县| 东港市| 疏勒县| 桂林市| 阜城县| 吉安县| 黑水县| 黑龙江省|