文章目录
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. 正则表达式
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模块
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'])