模块面试集锦(1-15)

1、列举常用的模块

基础:
os,sys,time,datetime,json,pickle,randon,hashlib,re,math,logging
爬虫:
requests,BeautifulSoup,xpath,gevent,asyncio,twisted
数据分析:
pandas,numpy,scipy,matplotlib,seaborn

等。。。

2、如何安装第三方模块?

pip3 install 模块名称

3、re的match和search区别?

match:匹配开头

search:匹配从上至下查找

import re

s1 = 'abcabcabc'

print(re.match('abc', s1).group())  # abc
print(re.match('abc', s1).span())   # (0, 2)

print(re.search('bca', s1).group())  # bca
print(re.search('bca', s1).span())  # (1, 4)

4、什么是正则的贪婪匹配?

贪婪匹配:
    默认都是贪婪匹配。贪婪匹配都是取大,比如:   *表示零次更多次、+表示一次或多次、?表示零次或一次
    默认贪婪匹配时:*表示多次、+表示多次、?表示一次

取消贪婪匹配:
    量词后面加问号(?)。 eg: 待匹配:李杰和李莲英和李二棍子    正则表达式:李.+?  结果:李杰   李莲  李二    ,因为+后面跟了?,所以+表示一次
        
    res3 = re.findall('李.?','李杰和李莲英和李二棍子')
    print(res3)
    # 结果:['李杰', '李莲', '李二']
    
转义符:

\   :   取消转义

  eg:  \\n 表示\n

5、生成一个随机数?

用random随机模块
import random

print(random.randint(0, 9))  # 随机取一个0-9的数字,包含头尾
print(random.random)  # 取0-1之间的小数
print(random.choice([1, 2, 3, 4]))  # 随机从列表中取一个值
print(random.uniform(1,10))#1-10小数,如1.927109612082716 
random.randrange(1,10,2) # 大于等于1且小于10之间的奇数

6、如何使用python删除一个文件?

用os模块

import os
os.remove('文件名')

7、logging模块的作用?以及应用场景?

在我们平时编写的程序,基本上都会有记录日志的需求,并且日志当中包含的内容既有正常的程序访问,又有错误,警告等信息输出,在python的logging模块当中就提供了标准的日志接口,可以通过它来存储各种格式的日志.
logging模块也分为五个等级:
debug(),
info(),
warning(),
error(),
critical()
其中默认级别为warning,默认打印到终端

"""
开发应用程序或部署开发环境时,可以使用DEBUG或INFO级别的日志获取尽可能详细的日志信息来进行开发或部署调试;应用上线或部署生产环境时,应该使用WARNING或ERROR或CRITICAL级别的日志来降低机器的I/O压力和提高获取错误日志信息的效率。
"""

8、json序列化时,可以处理的数据类型有哪些?自定义JSON

可以处理的数据类型是 string、int、list、tuple、dict、bool、null

# 自定义时间序列化转换器
import json
from json import JSONEncoder
from datetime import datetime
class ComplexEncoder(JSONEncoder):
    def default(self, obj):
        if isinstance(obj, datetime):
            return obj.strftime('%Y-%m-%d %H:%M:%S')
        else:
            return super(ComplexEncoder,self).default(obj)
d = { 'name':'alex','data':datetime.now()}
print(json.dumps(d,cls=ComplexEncoder))

9、json序列化时,保留中文不转码,用什么参数?

# ensure_ascii=False 中文不转码

import json
a=json.dumps({"ddf":"你好"},ensure_ascii=False)
print(a) #{"ddf": "你好"}

10、查看目录下的的所有文件?

import os

print(os.listdir(path))

11、如何判断一个邮箱合法re正则?

import re

if re.match(r'^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$', email):
    print('right')
else:
    print('wrong')

12、python开发网络应用的框架

1.  Django
2.  Flask
3.  web2py
4.  Tornado
5.  Twisted
6.  TurboGears

13、写爬虫的时候用到了那些模块,作用是什么?

requests:请求库
BeautifulSoup:解析库
selenium:自动化测试工具
pyquery:网页解析库
pymysql:存储库。操作mysql数据库的
pymongo:操作mongodb数据库的
urllib.request 请求模块    模拟浏览器
urllib.error 异常处理模块
urllib.parse url解析模块    工具模块,如:拆分、合并
urllib.robotparser robots.txt    解析模块  

14、列举python中比较熟知的框架

1.Scrapy

Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。。用这个框架可以轻松爬下来如亚马逊商品信息之类的数据。

2.PySpider

pyspider 是一个用python实现的功能强大的网络爬虫系统,能在浏览器界面上进行脚本的编写,功能的调度和爬取结果的实时查看,后端使用常用的数据库进行爬取结果的存储,还能定时设置任务与任务优先级等。

3.Crawley

Crawley可以高速爬取对应网站的内容,支持关系和非关系数据库,数据可以导出为JSON、XML等。

4.Portia

Portia是一个开源可视化爬虫工具,可让您在不需要任何编程知识的情况下爬取网站!简单地注释您感兴趣的页面,Portia将创建一个蜘蛛来从类似的页面提取数据。

5.Newspaper

Newspaper可以用来提取新闻、文章和内容分析。使用多线程,支持10多种语言等。

6.Cola

Cola是一个分布式的爬虫框架,对于用户来说,只需编写几个特定的函数,而无需关注分布式运行的细节。任务会自动分配到多台机器上,整个过程对用户是透明的。

7.Grab

Grab是一个用于构建Web刮板的Python框架。借助Grab,您可以构建各种复杂的网页抓取工具,从简单的5行脚本到处理数百万个网页的复杂异步网站抓取工具。Grab提供一个API用于执行网络请求和处理接收到的内容,例如与HTML文档的DOM树进行交互。

15、输入某年某月,判断这是这一年的第几天?

import datetime

y = int(input('请输入4位数字的年份:'))  # 获取年份
m = int(input('请输入月份:'))  # 获取月份
d = int(input('请输入是哪一天:'))  # 获取“日”

targetDay = datetime.date(y, m, d)  # 将输入的日期格式化成标准的日期
dayCount = targetDay - datetime.date(targetDay.year - 1, 12, 31)  # 减去上一年最后一天
print('%s是%s年的第%s天。' % (targetDay, y, dayCount.days))

猜你喜欢

转载自www.cnblogs.com/guyouyin123/p/12285484.html
今日推荐