Python如何统计文本中两字及以上的词语个数

Python入门。想问问如何统计一个文本中两字以上(含两字)的词语个数呀?输出例如:文本中两字以上(含两字)的词语数量:39
谢谢。

##str1 改成你的文本内容


import jieba

str1="""
我来到北京清华大学清华大学
"""
a=jieba.lcut(str1)
res=[]
for i in a:
    if len(i)>=2 and i not in res:
        res.append(i)
print("文本中两字以上(含两字)的词语数量:",len(res))
给你上例子:
我做《三国演义》词云的
        
from collections import Counter
import jieba

content = """滚滚长江东逝水,浪花淘尽英雄。是非成败转头空。
    青山依旧在,几度夕阳红。白发渔樵江渚上,惯看秋月春风。一壶浊酒喜相逢。古今多少事,都付笑谈中——
    调寄《临江仙》
    话说天下大势,分久必合,合久必分。周末七国分争,并入于秦。及秦灭之后,楚、汉分争,又并入于汉。汉朝自高祖斩白蛇而起义,一统天下,后来光武中兴,传至献帝,遂分为三国。推其致乱之由,殆始于桓、灵二帝。桓帝禁锢善类,崇信宦官。及桓帝崩,灵帝即位,大将军窦武、太傅陈蕃共相辅佐。时有宦官曹节等弄权,窦武、陈蕃谋诛之,机事不密,反为所害,中涓自此愈横。
    建宁二年四月望日,帝御温德殿。方升座,殿角狂风骤起。只见一条大青蛇,从梁上飞将下来,蟠于椅上。帝惊倒,左右急救入宫,百官俱奔避。须臾,蛇不见了。忽然大雷大雨,加以冰雹,落到半夜方止,坏却房屋无数。建宁四年二月,洛阳地震;又海水泛溢,沿海居民,尽被大浪卷入海中。光和元年,雌鸡化雄。六月朔,黑气十余丈,飞入温德殿中。秋七月,有虹现于玉堂;五原山岸,尽皆崩裂。种种不祥,非止一端。帝下诏问群臣以灾异之由,议郎蔡邕上疏,以为-堕鸡化,乃妇寺干政之所致,言颇切直。帝览奏叹息,因起更衣。曹节在后窃视,悉宣告左右;遂以他事陷邕于罪,放归田里。后张让、赵忠、封-、段-、曹节、侯览、蹇硕、程旷、夏恽、郭胜十人朋比为奸,号为“十常侍”。帝尊信张让,呼为“阿父”。朝政日非,以致天下人心思乱,盗贼蜂起。
    时巨鹿郡有兄弟三人,一名张角,一名张宝,一名张梁。那张角本是个不第秀才,因入山采药,遇一老人,碧眼童颜,手执藜杖,唤角至一洞中,以天书三卷授之,曰:“此名《太平要术》,汝得之,当代天宣化,普救世人;若萌异心,必获恶报。”角拜问姓名。老人曰:“吾乃南华老仙也。”言讫,化阵清风而去。角得此书,晓夜攻习,能呼风唤雨,号为“太平道人”。中平元年正月内,疫气流行,张角散施符水,为人治病,自称“大贤良师”。角有徒弟五百余人,云游四方,皆能书符念咒。次后徒众日多,角乃立三十六方,大方万余人,小方六七千,各立渠帅,称为将军;讹言:“苍天已死,黄天当立;岁在甲子,天下大吉。”令人各以白土书“甲子”二字于家中大门上。青、幽、徐、冀、荆、扬、兖、豫八州之人,家家侍奉大贤良师张角名字。角遣其党马元义,暗赍金帛,结交中涓封-,以为内应。角与二弟商议曰:“至难得者,民心也。今民心已顺,若不乘势取天下,诚为可惜。”遂一面私造黄旗,约期举事;一面使弟子唐周,驰书报封。唐周乃径赴省中告变。帝召大将军何进调兵擒马元义,斩之;次收封-等一干人下狱。张角闻知事露,星夜举兵,自称“天公将军”,张宝称“地公将军”,张梁称“人公将军”。申言于众曰:“今汉运将终,大圣人出。汝等皆宜顺天从正,以乐太平。”四方百姓,裹黄巾从张角反者四五十万。贼势浩大,官军望风而靡。何进奏帝火速降诏,令各处备御,讨贼立功。一面遣中郎将卢植、皇甫嵩、朱-,各引精兵、分三路讨之。
    且说张角一军,前犯幽州界分。幽州太守刘焉,乃江夏竟陵人氏,汉鲁恭王之后也。当时闻得贼兵将至,召校尉邹靖计议。靖曰:“贼兵众,我兵寡,明公宜作速招军应敌。”刘焉然其说,随即出榜招募义兵。
    榜文行到涿县,引出涿县中一个英雄。那人不甚好读书;性宽和,寡言语,喜怒不形于色;素有大志,专好结交天下豪杰;生得身长七尺五寸,两耳垂肩,双手过膝,目能自顾其耳,面如冠玉,唇若涂脂;中山靖王刘胜之后,汉景帝阁下玄孙,姓刘名备,字玄德。昔刘胜之子刘贞,汉武时封涿鹿亭侯,后坐酎金失侯,因此遗这一枝在涿县。玄德祖刘雄,父刘弘。弘曾举孝廉,亦尝作吏,早丧。玄德幼孤,事母至孝;家贫,贩屦织席为业。家住本县楼桑村。其家之东南,有一大桑树,高五丈余,遥望之,童童如车盖。相者云:“此家必出贵人。”玄德幼时,与乡中小儿戏于树下,曰:“我为天子,当乘此车盖。”叔父刘元起奇其言,曰:“此儿非常人也!”因见玄德家贫,常资给之。年十五岁,母使游学,尝师事郑玄、卢植,与公孙瓒等为友。
    及刘焉发榜招军时,玄德年已二十八岁矣。当日见了榜文,慨然长叹。随后一人厉声言曰:“大丈夫不与国家出力,何故长叹?”玄德回视其人,身长八尺,豹头环眼,燕颔虎须,声若巨雷,势如奔马。玄德见他形貌异常,问其姓名。其人曰:“某姓张名飞,字翼德。世居涿郡,颇有庄田,卖酒屠猪,专好结交天下豪杰。恰才见公看榜而叹,故此相问。”玄德曰:“我本汉室宗亲,姓刘,名备。今闻黄巾倡乱,有志欲破贼安民,恨力不能,故长叹耳。”飞曰:“吾颇有资财,当招募乡勇,与公同举大事,如何。”玄德甚喜,遂与同入村店中饮酒。
    正饮间,见一大汉,推着一辆车子,到店门首歇了,入店坐下,便唤酒保:“快斟酒来吃,我待赶入城去投军。”玄德看其人:身长九尺,髯长二尺;面如重枣,唇若涂脂;丹凤眼,卧蚕眉,相貌堂堂,威风凛凛。玄德就邀他同坐,叩其姓名。其人曰:“吾姓关名羽,字长生,后改云长,河东解良人也。因本处势豪倚势凌人,被吾杀了,逃难江湖,五六年矣。今闻此处招军破贼,特来应募。”玄德遂以己志告之,云长大喜。同到张飞庄上,共议大事。飞曰:“吾庄后有一桃园,花开正盛;明日当于园中祭告天地,我三人结为兄弟,协力同心,然后可图大事。”玄德、云长齐声应曰:“如此甚好。”
    次日,于桃园中,备下乌牛白马祭礼等项,三人焚香再拜而说誓曰:“念刘备、关羽、张飞,虽然异姓,既结为兄弟,则同心协力,救困扶危;上报国家,下安黎庶。不求同年同月同日生,只愿同年同月同日死。皇天后土,实鉴此心,背义忘恩,天人共戮!”誓毕,拜玄德为兄,关羽次之,张飞为弟。祭罢天地,复宰牛设酒,聚乡中勇士,得三百余人,就桃园中痛饮一醉。来日收拾军器,但恨无马匹可乘。正思虑间,人报有两个客人,引一伙伴当,赶一群马,投庄上来。玄德曰:“此天佑我也!”三人出庄迎接。原来二客乃中山大商:一名张世平,一名苏双,每年往北贩马,近因寇发而回。玄德请二人到庄,置酒管待,诉说欲讨贼安民之意。二客大喜,愿将良马五十匹相送;又赠金银五百两,镔铁一千斤,以资器用。
    玄德谢别二客,便命良匠打造双股剑。云长造青龙偃月刀,又名“冷艳锯”,重八十二斤。张飞造丈八点钢矛。各置全身铠甲。共聚乡勇五百余人,来见邹靖。邹靖引见太守刘焉。三人参见毕,各通姓名。玄德说起宗派,刘焉大喜,遂认玄德为侄。不数日,人报黄巾贼将程远志统兵五万来犯涿郡。刘焉令邹靖引玄德等三人,统兵五百,前去破敌。玄德等欣然领军前进,直至大兴山下,与贼相见。贼众皆披发,以黄巾抹额。当下两军相对,玄德出马,左有云长,右有翼德,扬鞭大骂:“反国逆贼,何不早降!”程远志大怒,遣副将邓茂出战。张飞挺丈八蛇矛直出,手起处,刺中邓茂心窝,翻身落马。程远志见折了邓茂,拍马舞刀,直取张飞。云长舞动大刀,纵马飞迎。程远志见了,早吃一惊,措手不及,被云长刀起处,挥为两段。后人有诗赞二人曰:英雄露颖在今朝,一试矛兮一试刀。初出便将威力展,三分好把姓名标。
    众贼见程远志被斩,皆倒戈而走。玄德挥军追赶,投降者不计其数,大胜而回。刘焉亲自迎接,赏劳军士。次日,接得青州太守龚景牒文,言黄巾贼围城将陷,乞赐救援。刘焉与玄德商议。玄德曰:“备愿往救之。”刘焉令邹靖将兵五千,同玄德、关、张,投青州来。贼众见救军至,分兵混战。玄德兵寡不胜,退三十里下寨。
    玄德谓关、张曰:“贼众我寡;必出奇兵,方可取胜。”乃分关公引一千军伏山左,张飞引一千军伏山右,鸣金为号,齐出接应。次日,玄德与邹靖引军鼓噪而进。贼众迎战,玄德引军便退。贼众乘势追赶,方过山岭,玄德军中一齐鸣金,左右两军齐出,玄德摩军回身复杀。三路夹攻,贼众大溃。直赶至青州城下,太守龚景亦率民兵出城助战。贼势大败,剿戮极多,遂解青州之围。后人有诗赞玄德曰:运筹决算有神功,二虎还须逊一龙。初出便能垂伟绩,自应分鼎在孤穷。
    龚景犒军毕,邹靖欲回。玄德曰:“近闻中郎将卢植与贼首张角战于广宗,备昔曾师事卢植,欲往助之。”于是邹靖引军自回,玄德与关、张引本部五百人投广宗来。至卢植军中,入帐施礼,具道来意。卢植大喜,留在帐前听调。
    时张角贼众十五万,植兵五万,相拒于广宗,未见胜负。"""
res = jieba.lcut(content)# 对文章jieba分词
res = Counter(res)# 统计词频
result = {k: v for k,v in res.items() if len(k) > 1 and v > 1} # 过滤出:词长大于1,词的个数大于1
res = sorted(result.items(), key=lambda x: x[1], reverse=True) # 按词的个数从大到小排序 
result = [i for i in res][:200]# 取前200个
print(result)
--result
[('玄德', 14), ('张角', 7), ('卢植', 6), ('刘焉', 6), ('张飞', 6), ('天下', 5), ('三人', 5), ('一名', 5), ('姓名', 5), ('黄巾', 5), ('玄德曰', 5), ('云长', 5), ('程远志', 5), ('将军', 4), ('太守', 4), ('邹靖', 4), ('大喜', 4), ('邹靖引', 4), ('青州', 4), ('英雄', 3), ('之后', 3), ('曹节', 3), ('兄弟', 3), ('太平', 3), ('结交', 3), ('一面', 3), ('招军', 3), ('涿县', 3), ('身长', 3), ('长叹', 3), ('其人', 3), ('大事', 3), ('桃园', 3), ('次日', 3), ('邓茂', 3), ('广宗', 3), ('分争', 2), ('并入', 2), ('宦官', 2), ('大将军', 2), ('窦武', 2), ('建宁', 2), ('温德殿', 2), ('左右', 2), ('元年', 2), ('以为', 2), ('张梁', 2), ('老人', 2), ('自称', 2), ('贤良', 2), ('五百余', 2), ('甲子', 2), ('马元义', 2), ('商议', 2), ('民心', 2), ('乘势', 2), ('唐周', 2), ('何进', 2), ('贼势', 2), ('讨贼', 2), ('中郎将', 2), ('三路', 2), ('幽州', 2), ('贼兵', 2), ('招募', 2),
 ('榜文', 2), ('专好', 2), ('豪杰', 2), ('涂脂', 2), ('中山', 2), ('家贫', 2), ('车盖', 2), ('必出', 2), ('师事', 2), ('国家', 2), ('涿郡', 2), ('今闻', 2), ('破贼', 2), ('安民', 2), ('乡勇', 2), ('天地', 2), ('结为', 2), ('关羽', 2), ('人报', 2), ('迎接', 2), ('二客', 2), ('二人', 2), ('统兵', 2), ('五万', 2), ('刘焉令', 2), ('五百', 2), ('后人', 2), ('诗赞', 2), ('一试', 2), ('初出', 2), ('追赶', 2), ('一千', 2), ('伏山', 2), ('鸣金', 2)]


中文还是英文?中文的话要先分词,这一直是个难题,没有完美的中文分词工具。

得先有词云才能用jieba吖

参考一下
Python实例3:中文词语统计_简时刻的博客-CSDN博客_python统计中文词语个数

先用jieba中文分析,然后分别计算每个词的长度,把长度大于2的输出就可以了

python统计文本中各词数
https://blog.csdn.net/O_C_E_A_N_/article/details/124354238



```python
def getText():
    t = open("hamlet.txt", "r").read()  # 读
    t = t.lower()  # 全体小写
    for i in "!\"#$%&()*+,-./:;<=>?@[\\]^_‘{|}~":  # 略
        t = t.replace(i, " ")
    return t


h = getText()
s = int(input())  # 指定数
words = h.split()  # 列表化
counts = {}  # 暂存字典
for word in words:  # 统计
    counts[word] = counts.get(word, 0) + 1
items = list(counts.items())
items.sort(key=lambda x: x[1], reverse=True)  # 降序统计
for i in range(s):  # 格式化输出
    word, count = items[i]
    print("{0:<10}{1:>5}".format(word, count))



```

可以参考看看,
https://blog.csdn.net/qq_15028721/article/details/109211677

用jieba分词做,jieba将字符串切分成列表,然后遍历列表找元素长度大于二的就行

首先就要中英文分词,中文用jieba,英文看分隔符,分好后建立链表或dict,然后计算每个词的字符长度,把长度大于2的词输出,同时统计个数,文章结束,输出词和总个数就okl

参考 chuifengde