模块面试集锦(1-15)

一、列举经常使用的模块

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

等。。。

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

pip3 install 模块名称

三、re的match和search区别?

match:匹配开头mysql

search:匹配从上至下查找web

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)

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

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

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

\   :   取消转义

  eg:  \\n 表示\n

五、生成一个随机数?

用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之间的奇数

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

用os模块

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

七、logging模块的做用?以及应用场景?

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

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

八、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))

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

# ensure_ascii=False 中文不转码

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

十、查看目录下的的全部文件?

import os

print(os.listdir(path))

十一、如何判断一个邮箱合法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')

十二、python开发网络应用的框架

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

1三、写爬虫的时候用到了那些模块,做用是什么?

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

1四、列举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树进行交互。

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

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))
相关文章
相关标签/搜索