首页 > 编程语言 >Python模块面试题

Python模块面试题

时间:2023-05-08 18:44:34浏览次数:39  
标签:面试题 匹配 Python datetime re 模块 print import

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()函数只检测字符串开头位置是否匹配,匹配成功才会返回结果,否则返回None

import re
 
s1 = 'abcabcabc'
 
print(re.match('abc', s1))
print(re.match('abc', s1).group())
print(re.match('abc', s1).span())

search()函数会在整个字符串内查找模式匹配,只到找到第一个匹配然后返回一个包含匹配信息的对象,该对象可以通过调用group()方法得到匹配的字符串,如果字符串没有匹配,则返回None。

import re
 
s1 = 'abcabcabc'
 
print(re.search('bca', s1))
print(re.search('bca', s1).group())
print(re.search('bca', s1).span())

4.什么是正则的贪婪匹配?或 正则匹配中的贪婪模式与非贪婪模式的区别?

贪婪模式:能匹配的最大部分

“.+”中的+会一直查找到最后一个符合条件的字符

非贪婪模式:匹配越少越好

“.+?"会匹配到第一个符合条件的字符就停止

5.如何生成一个随机数?

import random
random.randint(1,9)

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

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

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

在我们平时编写的程序,基本上都会有记录日志的需求,并且日志当中包含的内容既有正常的程序访问,又有错误,警告等信息输出,在python的logging模块当中就提供了标准的日志接口,可以通过它来存储各种格式的日志.
logging模块也分为五个等级:
debug(),
info(),
warning(),
error(),
critical()
其中默认级别为warning,默认打印到终端
 
"""
开发应用程序或部署开发环境时,可以使用DEBUG或INFO级别的日志获取尽可能详细的日志信息来进行开发或部署调试;应用上线或部署生产环境时,应该使用WARNING或ERROR或CRITICAL级别的日志来降低机器的I/O压力和提高获取错误日志信息的效率。
"""

8.json 序列化时,可以处理的数据类型有哪些?如何定制支持 datetime 类 型?

可以处理的数据类型是 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 序列化时,默认遇到中文会转换成 unicode,如果想要保留中文怎么办?

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

10.写代码实现查看一个目录下的所有文件。

import os
 
print(os.listdir(path))

11.用Python匹配HTMLtag的时候,<.*><.*?>有什么区别?

<.*>:贪婪匹配,会匹配到符合条件的所有标签
<.*?>:非贪婪匹配,匹配到符合条件的第一个标签

12.如何判断一个邮箱合法

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

13.sys.path.append("/root/mods")的作用?

将/root/mods文件添加到环境变量

14.下面那些是Python开发网络应用的框架

1.  Django
2.  Yii
3.  Struts
4.  Rails
5.  Uliweb
6.  CodeIgniter
7.  gevent
8.  Flask
9.  web2py
10.  Pylons
11.  Tornado
12.  Twisted
13.  TurboGears
 
1,8,9,11,12,13

15.写Python爬虫都用到了那些模块,分别是做什么用的?

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

16.sys.path.append("/root/mods")的作用?

将/root/mods文件添加到环境变量

17.列举出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树进行交互。

18.输入某年某日,判断这是这一年的第几天?(可以用Python的内置模块)

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

标签:面试题,匹配,Python,datetime,re,模块,print,import
From: https://www.cnblogs.com/ycmyay/p/17382805.html

相关文章

  • Python设计模式面试题
    单例模式1请手写一个单例#encoding=utf8importthreadingimporttime#这里使用方法__new__来实现单例模式classSingleton(object):#抽象单例def__new__(cls,*args,**kw):ifnothasattr(cls,'_instance'):orig=super(Singleton,cls)......
  • python selenium 元素定位方法
    1.通过元素的id属性进行元素定位,在html中元素的id是唯一的定位方法:find_element_by_id(id)fromseleniumimportwebdriver#创建WebDriver对象,指明使用chrome浏览器驱动wd=webdriver.Chrome()#调用WebDriver对象的get方法可以让浏览器打开指定网址wd.get('ht......
  • python 打包
    1,单文件打包pyinstaller-F-wfile.py-F:-w::启动exe文件,不显示控制台2,多文件打包 文件结构:testmain.pyset.py如果使用:pyinstaller-F-wmain.py发生问题:相互依赖的文件,打包后无法引用,导致报错可以使用:pyinstaller-Dmain.py-pset.py假......
  • Python绘制雷达图
    基本步骤创建一个axe对象,创建时设置参数polar为True以使用极坐标系绘制图像示例代码frommatplotlibimportpyplotaspltax=plt.subplot(111,polar=True)#设置绘制极坐标xs=['a','b','c','d','e','a']ys=[1,2,4,3,1,1......
  • 肉身布莱特-感知机python实现
    一、代码:做线性拟合importnumpyasnpfrommatplotlibimportpyplotasplt#很简单的一个体积增大和毒气量的关系拟合virulence=np.random.rand(100)volume=np.random.rand(100)virulence.sort()volume.sort()plt.scatter(volume,virulence)w=0b=0alp......
  • 用Python语言进行时间序列ARIMA模型分析
    应用时间序列时间序列分析是一种重要的数据分析方法,应用广泛。以下列举了几个时间序列分析的应用场景:1.经济预测:时间序列分析可以用来分析经济数据,预测未来经济趋势和走向。例如,利用历史股市数据和经济指标进行时间序列分析,可以预测未来股市的走向。2.交通拥堵预测:时间......
  • python快速直白入门(半新手向,老手复习向)
    主用python做项目有一段时间,这次简单总结学习下。为后面的项目编写,进行一次基础知识的查缺补漏、1、变量名和数据类型"""变量名,只能由"数字、大小写字母、_"组成,且不能以数字开头"""#整数int#hashable,不可变对象a=5#浮点数float#hashable,不可变对象a1=3......
  • (python) 数据库一次 Connection 连接,不同 cursor
    数据库一次Connection连接,不同cursor的最简洁代码:importpymysqlclassDatabase(object):connection=Nonedef__init__(self):ifnotDatabase.connection:Database.connection=pymysql.connect(host="127.0.0.1",......
  • kali Metasploit导入模块
    比如对于漏洞CyberLinkLabelPrint2.5-StackBufferOverflow(Metasploit)-WindowslocalExploit(exploit-db.com)首先从Exploit-DB下载45985.rb文件,该文件是ruby写的metasploit模块,用来复现攻击将模块复制到metasploit的渗透攻击模块目录cd/usr/share/metasploit-fr......
  • Python语言进行代码换行常用的方法详解!
    在编写Python代码时,有效换行可以让代码变得更加美观,那么Python中如何进行代码换行?Python中换行的方法有很多,本文为大家介绍两种比较常用的方法,快来看看吧。Python建议每行代码的长度不超过80个字符。对于过长的代码,建议进行换行。1、在该行代码末尾加上续行符“\”,即......