10.文件与文件系统

10.文件与文件系统

1.打开中文字符的文档时,会出现乱码,Python自带的打开文件是否可以指定文字编码?还是只能用相关函数?

用open(path, ‘r’, encoding = ‘utf-8’) 打开文件就可以。中文字符默认是用gbk编码方式来读取,所以会报错

2.编写程序查找最长的单词

输入文档: res/test.txt
题目说明:

"""
   
Input file
   test.txt
   
Output file
   ['general-purpose,', 'object-oriented,']
   
"""
def longest_word(filename):
    with open(filename, 'r', encoding = 'utf-8') as f:
    	data = f.read().strip().split('\n')
    data1 = ' '.join(data).split(' ')
    data1.sort(key = lambda x:len(x))
    longest = [i for i in data1 if len(i) == len(data1[-1])]
    return longest 

In [74]: longest_word('test.txt')
Out[74]: ['general-purpose,', 'object-oriented,']

1、首先需要读取文件。函数的输入参数里给了文件名,在函数里使用with的结构去打开并读取文件。由于这里的字符比较混乱,我使用了两层处理。
第一:读取全部数据,用strip()去除头尾的字符,再用split(’\n’)切割每一段。不用readlines()是因为它读取的结果里还是包含了’\n’.
第二,用’ ‘.join 的方法重新组合字符串,再进行split(’ '), 按照空格来切割,得到单个字符。
2、找最长的字符串。首先想到的就是排序。但是这里要按照字符串的长度来排序。为了达到这个目的,使用key和lambda函数
data1.sort(key = lambda x:len(x))
key 里返回字符串的len(),排序结果就是这样
3、由于最长的字符串可能不止一个。因此还要判断一下到底有几个是最长的。这里用一个列表推导式来做,加上判断,如果长度和最长的那个一样就保留下来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值