【show me the code】Python练习题&语法笔记 2

04. 统计文本中各单词出现的次数

0. 问题描述及代码

任一个英文的纯文本文件,统计其中的单词出现的个数。

# -*- coding: utf-8 -*-

import re

fin = open('./source/04-text.txt','r')
str = fin.read()

# 编译正则表达式,生成一个正则表达式对象
reObj = re.compile('\b?(\w+)\b?') 
# 在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,没有则返回空列表。
# 注意: match 和 search 是匹配一次 findall 匹配所有。
words = reObj.findall(str)

wordDict = dict() # 创建字典

for word in words:
    if word.lower() in wordDict:
        wordDict[word.lower()] += 1 # 词做key,次数做value
    else:
        wordDict[word] = 1
        
for key, value in wordDict.items():
    print('%s: %s' % (key, value))

1. 正则表达式

Python 正则表达式 | 菜鸟教程

正则表达式 - 廖雪峰的官方网站

05. 修改图片尺寸

0. 问题描述及代码

你有一个目录,装了很多照片,把它们的尺寸变成都不大于 iPhone5 分辨率的大小。

# -*- coding: utf-8 -*-

from PIL import Image
import os

path = 'source/05/pics'
resultPath = 'source/05/result'
if not os.path.isdir(resultPath): # 判断对象是不是目录
    os.mkdir(resultPath) # 以数字权限模式创建目录
for picName in os.listdir(path): # 返回指定的文件夹包含的文件或文件夹的名字的列表。
    picPath = os.path.join(path, picName)
    print(picPath)
    with Image.open(picPath) as im:
        w, h = im.size
        n = w / 1366 if (w / 1366) >= (h / 640) else h / 640
        im.thumbnail((w / n, h / n)) #生成图尺寸在1366*640范围内
        im.save(resultPath+'/finish_' + picName.split('.')[0] + '.jpg','jpeg')
        

1. os模块

Python3 OS 文件/目录方法 | 菜鸟教程

06. 统计几篇日记最重要的词

0. 问题描述及代码(有bug)

你有一个目录,放了你一个月的日记,都是 txt,为了避免分词的问题,假设内容都是英文,请统计出你认为每篇日记最重要的词。

import os
import re

def findWord(DirPath):
    if not os.path.isdir(DirPath):
        return
    fileList = os.listdir(DirPath)
    reObj = re.compile('\b?(\w+)\b?')
    for file in fileList:
        filePath = os.path.join(DirPath, file)
        if os.path.isflile(filePath) and os.path.splitext(filePath)[1] == '.txt':
            with open(filePath) as f:
                data = f.read()
                words = reObj.findall(data)
                wordDict = dict()
                for word in words:
                    word = word.lower()
                    if word in ['a', 'the', 'to']:
                        continue
                    if owrd in wordDict:
                        wordDict[word] += 1
                    else:
                        wordDict[word] = 1
            ansList = sorted(wordDict.items(), key=lambda t: t[1], reverse=True)
            print('file: %s->the most word: %s' % (file, ansList[1])
            
if __name__ == '__main__':
    findWord('source/06')

07. 统计一下你写过多少行代码

0. 问题描述及代码

有个目录,里面是你自己写过的程序,统计一下你写过多少行代码。包括空行和注释,但是要分别列出来。

# -*- coding: utf-8 -*-

import os
import re

def stat_code(dir_path):
    if not os.path.isdir(dir_path):
        return
    exp_re = re.compile(r'^#.*')
    file_list = os.listdir(dir_path)
    print("%s\t%s\t%s\t%s" % ('file', 'all_lines', 'space_lines', 'exp_lines'))
    for file in file_list:
        file_path = os.path.join(dir_path, file)
        if os.path.isfile(file_path) and os.path.splitext(file_path)[1] == '.py':
            #下面代码不加 utf-8,内部编码转化成gbk编码(默认)时会出错
            with open(file_path, encoding='utf-8') as f:
                all_lines = 0
                space_lines = 0
                exp_lines = 0
                for line in f.readlines():
                    all_lines += 1
                    if line.strip() == '':
                        space_lines += 1
                        continue
                    exp = exp_re.findall(line.strip())
                    if exp:
                        exp_lines += 1
            print("%s\t%s\t%s\t%s" % (file, all_lines, space_lines, exp_lines))
         
if __name__ == '__main__':
    stat_code('.')

08. 找出HTML文件的正文

0. 问题描述及代码

# -*- coding: utf-8 -*-

import requests, re
from bs4 import BeautifulSoup

url = 'https://translate.google.cn/'
data = requests.get(url)
r = re.findall(r'<body>[\s\S]*</body>',data.text)
print(r[0])

print('------------------------------')
soup = BeautifulSoup(data.text,'html.parser')
print(soup.body.text)

09. 找出HTML文件的链接

0. 问题描述及代码

# -*- coding: utf-8 -*-

import requests, re , os
from bs4 import BeautifulSoup

url = 'http://translate.google.cn/'
data = requests.get(url)
# urls = re.findall(r'<a.*href=\"(.*?)\".*</a>,data.text)
# print(urls)

soup = BeautifulSoup(data.text, 'html.parser')
urls = soup.findAll('a')
for u in urls:
    print(u['href'])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值