人生苦短,我用Python

环境:Windows 10 64-bit, python == 3.6.4 , PyCharm CE == 2018.1

声明:学习资源来自于网络,这里是自己学习笔记总结与分享,每篇内容会随着学习的深入进行更新,如发现问题请评论留言。由于网络重复资源比较多,原作者不明,均未给出链接,实现代码根据自己的理解会重新编写,若原作者看到此文,请留言,我将标记文中代码来源。

题目:统计一个文件夹下,各个纯英文文本中单词总数。

本练习针对文件操作,要用到os, os.path模块中的相关内容:

os.path.basename(path):

Return the base name of pathname path. This is the second element of the pair returned by passing path to the function split().

返回path最后的文件名。如果path以/或\结尾,那么就会返回空值

os.path.split(path) :

Split the pathname path into a pair, (head, tail) where tail is the last pathname component and head is everything leading up to that.

将path分割成目录和文件名二元组返回。

os.path.splitext(path):

Split the pathname path into a pair (root, ext) such that root + ext == path, and ext is empty or begins with a period and contains at most one period.

分离文件名和扩展名

os.listdir(path):

Return a list containing the names of the entries in the directory given by path. The list is in arbitrary order, and does not include the special entries '.' and '..' even if they are present in the directory.

返回指定目录下的所有文件和目录名

os.path.join(path, *paths)

Join one or more path components intelligently. The return value is the concatenation of path and any members of *paths.

连接目录与文件名或目录

os.path.isdir():

Return True if path is an existing directory.

判断name是不是目录,不是目录就返回false

os.path.isfile():

Return True if path is an existing regular file.

判断name是不是文件,是则返回True, 不是在返回false。

endswith()方法:

Return True if the string ends with the specified suffix, otherwise return False.

str.endswith(suffix[, start[, end ]])

用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False。可选参数"start"与"end"为检索字符串的开始与结束位置。

分析:

定义两个函数,一是用于统计文本中字数的函数getcount(),二是用于获取指定目录下文件的函数getfiles().

实现代码(运行OK):

import os, os.path

bookdir = r'D:\xiangmulixi\p04练习题' # 指定目录

# 定义统计函数

def getcount(path):

if os.path.basename(path).endswith('.txt'):

# os.path.basename(path):返回path中的文件名。

with open(path,'r') as myfile:

content = myfile.read()

# read() 方法用于从文件读取指定的字节数,如果未给定或为负则读取所有。

L = content.split()

N = len(L)

return N # 注:这里出现错误

# Python split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则仅分隔 num 个子字符串

# 返回分割后的字符串列表。

def getfiles(dir):

list = os.listdir(dir) # os.listdir(path):列举目录下的所有文件。返回的是列表类型。

for i in range(len(list)):

p = os.path.join(dir, list[i]) # # 将文件的相对路径转换成绝对路径

# os.path.join(path1,path2,...):将path进行组合,若其中有绝对路径,则之前的path将被删除。

if os.path.isdir(p): # os.path.isdir()函数检验给出的路径是否是目录

getfiles(p)

if os.path.isfile(p):# os.path.isfile()函数检验给出的路径是否是文件

l = getcount(p)

print('文件: %s 字数: %s 文件所在绝对路径: %s' % (os.path.basename(p), getcount(p),p))

# 调用函数

getfiles(bookdir)

错误提示:

在上面的代码中,getcount(path)函数刚开始是按照网上教程中写的,如下:

def getcount(path):

if os.path.basename(path).endswith('.txt'):

with open(path,'r') as myfile:

content = myfile.read()

return content.split()

直接返回content.split(),然后在getfiles(dir)函数中,用len(getcount(p))计算返回列表的长度,即为文本字数。但是,运行代码时,总是提示如下错误:

TypeError: object of type 'NoneType' has no len()

错误提示,return content.split()的返回值为NoneType,不支持任何运算也没有任何内建方法,所以不能使用len()计算。

修改代码,在getcount(path)函数中先计算好content.split()返回的列表的长度,然后将返回值N = len(L)作为函数的返回值返回。

待补充:return语句、函数返回值问题

python怎么统计单词总数_Python【习题】:统计纯英文文本中总字数相关推荐

  1. python怎么统计单词总数_python统计文本文件内单词数量的方法

    本文实例讲述了python统计文本文件内单词数量的方法.分享给大家供大家参考.具体实现方法如下: # count lines, sentences, and words of a text file ...

  2. python字典统计单词个数_python字典统计单词个数

    python 字典中的词频统计之后 如何将频数大于一个比如a出现了10次,b15次,c20次,d25次,CSS布局HTML小编今天和大家分享频数大于14的词的个数,应该v={} for i in di ...

  3. python统计元音总数_python:计算用户输入词中元音或辅音的数量

    我是大学新生,正在参加python编程课程.目前我正在努力使程序根据用户的输入计算元音或辅音的数量,以确定模式. 目前,我已经制作了两个列表,我试图找出如何编程python来计算元音/辅音. 这是我到 ...

  4. Python代码 | 文本操作 统计英文文本中,每个字母出现的次数

    Python代码 | 文本操作 统计英文文本中,每个字母出现的次数 # -*- coding: utf-8 -*- # 使用oepn获取文件路径 # path=open("arrogant. ...

  5. 编程,统计用户输入的一串英文文本中各单词的出现频率。

    编程,统计用户输入的一串英文文本中各单词的出现频率.注意: (1)", . ? !"等标点符号也作为分割单词的依据. (2)去除of.a.an.the这些无意义词语. (3)单词不 ...

  6. 统计单词的数量 描述 输入一个英文句子,以回车符结束,单词间以空格分隔,标点符号后跟至少一个空格,统计并输出单词的个数(仅统计单词,数字按单词计,不计算标点符号,重复单词出现几次就统计几次)。‪‬‪‬

    统计单词的数量 描述 输入一个英文句子,以回车符结束,单词间以空格分隔,标点符号后跟至少一个空格,统计并输出单词的个数(仅统计单词,数字按单词计,不计算标点符号,重复单词出现几次就统计几次).‪‬‪‬ ...

  7. 【java】统计英文文本中某些字母出现的次数

    如何统计英文文本中某些字母出现的次数 public class Java_3 {public static void main(String[] args) {String text = " ...

  8. python统计英文单词个数_python统计英文文本中的回文单词数

    1. 要求: 给定一篇纯英文的文本,统计其中回文单词的比列,并输出其中的回文单词,文本数据如下:PW3爱图古源码汇 This is Everyday Grammar. I am Madam Lucij ...

  9. python统计小说人物_Python爬虫 - 统计自己读过小说的字数

    写在前面的废话 没错,这个爬虫的确只是我想统计下自己读小说的速度和自己已经读了多少小说写的,可以爬一些小说的数据,不能用来爬小说本身.不过稍加改进可以实现更多的功能,我会在之后的文章实现其他的功能. ...

最新文章

  1. Directx教程(24) 简单的光照模型(3)
  2. Nicholas C. Zakas如何面试前端工程师
  3. 前端学习(1840):前端面试题之mpvue和小程序
  4. 最有价值的100句话
  5. Ant Design Pro 登录超时处理
  6. MS SQL Server 2008 简体中文正式版下载地址(附序列号)
  7. 平台: pSeries AIX 4.3 AIX 5L
  8. 蝙蝠侠大战超人:正义黎明[Batman v Superman: Dawn of Justice]
  9. 蓝色音箱改装电源_JBL便携/无线音箱排行榜,JBL便携/无线音箱十大排名推荐
  10. linux下RabbitMQ的配置和安装
  11. 拓嘉启远:拼多多38“福女节”优惠如何参与
  12. Windows10 Hyper-v 虚拟机安装点心云,实现闲置宽带共享。
  13. 量子力学奇妙之旅-算符和电子自旋
  14. (三)CGAL库应用:仿射变换(点的旋转、平移、放大)
  15. Artifact “xxx - xxxx“:war exploded:部署工件时出错。请参阅服务器日志了解详细信息
  16. css中设置body字体,css如何设置body字体颜色
  17. 计算机网络(6)体系结构:计算机网络协议、接口、服务的概念
  18. Python glob()用法
  19. python判断字符串是否包含大写字母_Python:Python:如何检查unicode字符串是否包含一个cased字符?...
  20. windows系统服务器巡检仪哪个工具,机械振动巡检仪功能概述

热门文章

  1. OpenCV3.2+Qt5.8.0+Win10开发视频监控系统----Qt之设置应用程序图标
  2. Python爬虫:爬取“Boss直聘”招聘数据
  3. 365天英语口语学习_16,电话留言
  4. QUIC Design Documentand Specification Rationale(四)(即时翻译,会有多处错误)
  5. 解决启动tomcat时,一直卡在Deploying web application directory的问题
  6. 区块链技术在消费电子产品追溯系统中的应用
  7. 基于JAVA随心淘网管理系统计算机毕业设计源码+数据库+lw文档+系统+部署
  8. LAMP+DISCUZ论坛
  9. python财务入门基础培训
  10. 【美学设计】微信小程序界面设计