模塊面試集錦(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))
相關文章
相關標籤/搜索