Python读取文件找到长度最大的单词
读取文件找到长度最大的单词
题目:程序根目录下的 word.txt 文件中保存有n个单词,每个单词一行。请使用Python编写一个一个程序,读取words.txt文件,统计长度最大的单词输出到控制台
输出结果如下:
1 | sophisticated:13 |
程序示例:
1 | w = [] # 存放文件中读出并经过处理的单词 |
解析(逐行):
第1行:
1 | w = [] # 存放文件中读出并经过处理的单词 |
定义一个列表,这里列表w用来存放从文件中读出并经过处理(去除单词两侧空格)的单词
第2行
1 | y = [] # 存放w中每个单词的长度 |
定义一个列表,这里列表y用来存放上面数组w中各个单词的长度
第3行
1 | with open('words.txt', 'r') as fp: # 以只读的方式打开word.txt |
使用 ’r’(只读模式)打开存在程序目录下的 ‘words.txt’ 文件,并给其指定变量==fp==
此处涉及一个with as语句和open()方法,下面是详细解释:
with as语句:
with as 语句的基本语法格式为:
1 | with 表达式 [as target]: |
此格式中,用 [] 括起来的部分可以使用,也可以省略。其中,target 参数用于指定一个变量,该语句会将 expression 指定的结果保存到该变量中。with as 语句中的代码块如果不想执行任何语句,可以直接使用 pass 语句代替。
通过使用with as 语句,==即便最终没有关闭文件,修改文件内容的操作也能成功==。
open()方法有两个参数:
open(‘参数1’,’参数2’)
参数1为要创建或打开文件的文件名称,该名称要用引号(单引号或双引号都可以)括起来。需要注意的是,如果要打开的文件和当前执行的代码文件位于同一目录,则直接写文件名即可;否则,此参数需要指定打开文件所在的完整路径。
参数2为用于指定文件的打开模式。可选的==部分==打开模式如下表 所示。如果不写,则默认以只读(r)模式打开文件。
模式 | 含义 | 注意事项 |
---|---|---|
r | 只读模式打开文件,读文件内容的指针会放在文件的开头。 | 操作的文件必须存在。 |
w | 以只写模式打开文件,若该文件存在,打开时会清空文件中原有的内容。 | 操作的文件必须存在。 |
a | 以追加模式打开一个文件,对文件只有写入权限,如果文件已经存在,文件指针将放在文件的末尾(即新写入内容会位于已有内容之后);反之,则会创建新文件。 | / |
第4行
1 | for i in fp.readlines(): # 遍历文件每一行 |
循环遍历文件每一行
此处涉及一个readlines()方法,下面是详细解释:
readlines()方法
特点:一次性读取整个文件;自动将文件内容分析成一个行的列表
readlines()读取所有行,然后把它们作为一个字符串列表返回。
示例:
要读取的文档内容:
通过readlines()方法读取并输出:
==拓展:==
Python3中,读取文件还有另外两种方法:read()、readline()
read()方法:
特点:读取整个文件,将文件内容放到一个字符串变量中。
缺点:如果文件非常大,尤其是大于内存时,无法使用read()方法。
示例:
还是读取上面示例文档
通过read()方法读取并输出:
readline()方法:
特点:readline()方法每次读取一行;返回的是一个字符串对象,保持当前行的内存
缺点:一次只读一行,比readlines慢的多
示例:
还是读取上面示例文档
通过readline()方法读取并输出:
第5~7行
1 | if i.split(): # i不是空行 |
在循环遍历中,判断每一行是不是非空行,如果是非空行,把这行单词两边空格删除,并存入数组w
此处涉及三个方法:split(),strip(),append(),下面详细解释:
split()方法:
具体作用:拆分字符串。通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(list)
==此处仅用作判断是否非空行,如果是非空行,返回值1,继续运行if内部语句==
strip()方法:
具体作用:拆分字符串。通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(list)
==此处用来将第i行单词两边的空格删除==
append()方法:
方法append(obj),其中的参数obj为添加到列表末尾的对象
具体作用:用于在列表末尾添加一个元素
==此处用来将第i行单词添加到列表w的末尾==
第8~9行
1 | for i in w: # 遍历w |
循环遍历列表w,将列表w中各个单词的长度存入列表y
此处涉及两个方法:append(),len(),下面详细解释:
append()方法前面说过,此处不再赘述
len()方法:
作用:返回字符串、列表、字典、元组等长度
语法:len(str)
参数:str(要计算的字符串、列表、字典、元组等)
返回值:字符串、列表、字典、元组等元素的长度
==此处用来计算列表w中第i个单词的长度==
第10行
1 | m = max(y) # 找出长度最大值 |
找出列表y中长度最大值,并返回给变量m
此处涉及一个max()方法,下面详细解释:
max()方法:
主要作用:返回传入参数中的最大值
==此处用来找出列表y中各个单词长度的最大值==
第11~13行
1 | for j in w: # 遍历w |
循环遍历列表w,进行一个判断,找出列表w中单词长度为上面找出的最大值m的单词,输出这个单词和长度
此处涉及两个方法:len(),print(),下面详细解释:
len()方法上面已经说过,此处不再赘述
print()方法:
主要作用:打印输出字符串
==此处用来在控制台输出所找到的单词以及它的长度==
到此,该题大致完成
下面是部分Python基础语法:
for … in …
说明:也是循环结构的一种,经常用于遍历字符串、列表,元组,字典等
格式:
1 | for x in y: |
执行流程:x依次表示y中的一个元素,遍历完所有元素循环结束。
例1:遍历字符串
1 | s = 'I love you more than i can say' |
例2:遍历列表
1 | l = ['鹅鹅鹅', '曲项向天歌', '锄禾日当午', '春种一粒粟'] |
例3:遍历字典
1 | d = {'a':'apple', 'b':'banana', 'c':'car', 'd': 'desk'} |
致--小呆呆~