?1.正則表達(dá)式
? ? ? ? 正則表達(dá)式這一塊主要還是利用re模塊和正則表達(dá)式結(jié)合去進(jìn)行一個(gè)指定字符串的提取,我們首先需要了解到的就是元字符:
我們并不只有re.findall這一個(gè)方法,還有一個(gè)match對象方法以及flag參數(shù)也要一并復(fù)習(xí)
因?yàn)槭呛唵螐?fù)習(xí),所以我們來舉幾個(gè)例子:
eg1:
有一批網(wǎng)址:
http://www.interoem.com/messageinfo.asp?id=35
http://3995503.com/class/class09/news_show.asp?id=14
http://lib.wzmc.edu.cn/news/onews.asp?id=769
http://www.zy-ls.com/alfx.asp?newsid=377&id=6http://www.fincm.com/newslist.asp?id=415
需要正則后為:
http://www.interoem.com/?
http://3995503.com/?
http://lib.wzmc.edu.cn/?
http://www.zy-ls.com/??
import re
strings = '''http://www.interoem.com/messageinfo.asp?id=35
http://3995503.com/class/class09/news_show.asp?id=14
http://lib.wzmc.edu.cn/news/onews.asp?id=769
http://www.zy-ls.com/alfx.asp?newsid=377&id=6http://www.fincm.com/newslist.asp?id=415'''
ex = "(http://.*?/).*?"#這里主要的難點(diǎn)就在于找出合適的正則表達(dá)式
for each in re.findall(ex,strings):
print(each)
這里還有一個(gè)‘子組’的概念:如果在正則表達(dá)式中包含括號,則只會匹配出括號也就是子組中的內(nèi)容,這個(gè)還是要簡單記一下的
eg2:
利用正則表達(dá)式匹配出字符串中s=”(hello world), zha(Tom)”?括號中的內(nèi)容
re.findall(r’\(.+?\)’,s)
這里包含到了轉(zhuǎn)義字符,?’\(‘就可以進(jìn)行括號的識別,否則會被認(rèn)為是子組
2.PyQt-GUI編程
????????在Qt這里小題主要會考你某一個(gè)控件的作用,比如問你QMessage是干什么的等等,還有很多控件需要了解和去用,
比如:
- QLabel:用于顯示文本或圖像的標(biāo)簽
- QPushButton:用于點(diǎn)擊的按鈕
- QCheckBox:復(fù)選框控件,可以選擇和取消選擇
- QRadioButton:單選按鈕控件,只能選擇一個(gè)選項(xiàng)
- QLineEdit:用于輸入和編輯單行文本的文本框
- QTextEdit:用于編輯和顯示多行文本的文本框
- QComboBox:下拉列表框,提供一個(gè)選擇列表
- QSlider:滑動(dòng)條控件,用于選擇范圍內(nèi)的一個(gè)值
- QProgressBar:進(jìn)度條控件,用于顯示任務(wù)的完成進(jìn)度
- QSpinBox:數(shù)字選擇框,用于選擇整數(shù)值
- QDateTimeEdit:日期和時(shí)間編輯框,用于選擇日期和時(shí)間
- QTableView:表格視圖控件,用于顯示和編輯表格數(shù)據(jù)
- QTreeView:樹狀視圖控件,用于顯示樹形結(jié)構(gòu)的數(shù)據(jù)
- QListView:列表視圖控件,用于顯示項(xiàng)目列表
- QTabWidget:選項(xiàng)卡控件,用于創(chuàng)建多個(gè)頁面
- QMenuBar和QMenu:菜單欄和菜單控件,用于創(chuàng)建菜單
- QGraphicsView:圖形視圖控件,用于顯示和編輯圖形元素
- QWebEngineView:Web瀏覽器控件,用于顯示網(wǎng)頁內(nèi)容
大題還是主考代碼:
eg1:假如你有一個(gè)已經(jīng)pyuic的.py文件,想對其進(jìn)行一系列操作我們通常就是采用下面這種方法:定義一個(gè)類去進(jìn)行操作
這里簡單說一下信號和槽的鏈接:
第一點(diǎn):假如你設(shè)計(jì)的ui界面中有pushButton這個(gè)控件,想對他進(jìn)行連接就直接self.pushButton......等等,如果是LineEdit(單行文本),就直接self.LineEdit......,當(dāng)然注意順序,可能是pushButton_2等等,名稱寫對就可以
第二點(diǎn):槽函數(shù)是不需要寫括號的,像下面展示的prn函數(shù)就不需要括號
from PyQt5 import QtWidgets
from signal_slot import Ui_Form
import sys
class My_signal_slot(QtWidgets.QWidget,Ui_Form):
def __init__(self):
super(My_signal_slot, self).__init__()
self.setupUi(self)
self.pushButton.clicked.connect(self.prn)
def prn(self):
print("打印測試")
if __name__=="__main__":
app=QtWidgets.QApplication(sys.argv)
main=My_signal_slot()
main.show()
sys.exit(app.exec_())
?Qt的大題應(yīng)該就是這個(gè)模板,根據(jù)題干去加相應(yīng)的功能即可
3.數(shù)據(jù)庫編程
????????數(shù)據(jù)庫編程主要還是將數(shù)據(jù)庫與python(pycharm)連接起來使用,基本的sql語句
比如:
-
創(chuàng)建數(shù)據(jù)庫: CREATE DATABASE database_name;
-
切換到數(shù)據(jù)庫: USE database_name;
-
創(chuàng)建表: CREATE TABLE table_name ( column1 datatype, column2 datatype, column3 datatype );
-
插入數(shù)據(jù): INSERT INTO table_name (column1, column2, column3) VALUES (value1, value2, value3);
-
查詢數(shù)據(jù): SELECT column1, column2, column3 FROM table_name WHERE condition;
-
更新數(shù)據(jù): UPDATE table_name SET column1 = value1, column2 = value2 WHERE condition;
-
刪除數(shù)據(jù): DELETE FROM table_name WHERE condition;
-
刪除表: DROP TABLE table_name;
-
刪除數(shù)據(jù)庫: DROP DATABASE database_name;
在SqlServer中應(yīng)該也都滾瓜爛熟了,這里簡單提一嘴不多贅述。
接下來就是數(shù)據(jù)庫與python的連接代碼,大題應(yīng)該會考:
以下就是數(shù)據(jù)庫與python連接的常用代碼了,比較重要的語句是cur.execute語句,在對數(shù)據(jù)庫的操作中將sql語句作為參數(shù)填充進(jìn)去之后就可以執(zhí)行相應(yīng)的效能
import pymysql
db=pymysql.connect(host='localhost',port=3306,user='root',passwd='123456',database='stu',charset='utf8')
#獲取游標(biāo),創(chuàng)建游標(biāo)對象
cur=db.cursor()
#數(shù)據(jù)操作
cur.execute("insert into class_1 VALUES (4,'Emma',12,'m',86);")
#將修改內(nèi)容提交到數(shù)據(jù)庫
db.commit()
#關(guān)閉游標(biāo)和數(shù)據(jù)庫連接
cur.close()
db.close()
當(dāng)然傳參也可以傳變量參數(shù),
cur.execute("insert into class_1 values ('%s',%d,'%s',%f);"%(name,age,sex,score))
#或者
cur.execute("insert into class_1 values ('%s',%s,'%s',%s);",(name,age,sex,score))
這兩種都可以,第一種是常見的python占位符傳參,第二種是數(shù)據(jù)庫獨(dú)有的占位符傳參,只需全部傳入%s字符型的參數(shù),語句會根據(jù)表中每個(gè)屬性的類型進(jìn)行自動(dòng)類型轉(zhuǎn)換,說簡單就是,你只管傳%s,他自己會變的。?
還有一點(diǎn)是關(guān)于查詢出的數(shù)據(jù)的遍歷,使用的是cur.fetchall(),cur.fetchone()等函數(shù)也需要復(fù)習(xí)到,fetchall使用的更廣泛些,返回的為元組嵌套
4.網(wǎng)絡(luò)編程
? ? ? ? 網(wǎng)絡(luò)編程主要就是依靠套接字Socket來實(shí)現(xiàn)的,基本就以下幾步:
???????????????(1) 創(chuàng)建服務(wù)器套接字;
? ? ? ? ? ? ? ?(2) 使用bind()方法綁定;
? ? ? ? ? ? ? ?(3)調(diào)用listen()方法去監(jiān)聽某個(gè)特定的地址;
? ? ? ? ? ? ?? (4) 使用accept()方法接受客戶端的連接;
? ? ? ? ? ? ? ?(5) 利用套接字的兩個(gè)方法:send()(用于發(fā)送數(shù)據(jù))和recv()(用于接收數(shù)據(jù));
? ? ? ? ? ? ? ?(6) 關(guān)閉套接字。
? ? ? ? 但是需要注意的是在網(wǎng)絡(luò)編程中有兩個(gè)協(xié)議:TCP和UDP,二者區(qū)別就在于:TCP更安全,UDP更方便
接下來我們針對TCP和tUDP的Server(服務(wù)器)和Client(客戶端)進(jìn)行代碼演示:
TCP_Server:
import socket
sockfd = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#bind方法綁定
sockfd.bind(('0.0.0.0',8888))
#監(jiān)聽隊(duì)列,這里代表可以同時(shí)連接5個(gè)客戶端
sockfd.listen(5)
print('Waiting for connect....')
while True:
print('Waiting for receive....')
#接受客戶端的連接
connfd,addr = sockfd.accept()
print('Connect from ',addr)
while True:
#recv接收數(shù)據(jù),數(shù)字為接受的最大字節(jié)數(shù)
data = connfd.recv(1024)
if not data:
break
print('Receive data:'+data.decode())
send_data = input('請輸入你需要發(fā)送的內(nèi)容:')
#send發(fā)送數(shù)據(jù)
connfd.send(send_data.encode())
connfd.close()
sockfd.close()
TCP_Client:
from socket import *
sockfd = socket()
sercer_addr = ('127.0.0.1',8888)
#connect進(jìn)行連接
sockfd.connect(sercer_addr)
while True:
print('Waiting........')
send_data = input('請輸入需要發(fā)送的信息:')
if not send_data:
break
#send發(fā)送信息
sockfd.send(send_data.encode())
data = sockfd.recv(1024)#recv接收信息,recv中的數(shù)字代表接受的最大字節(jié)數(shù)
print('From server:',data.decode())
sockfd.close()
?UDP_Server:
from socket import *
sockfd = socket(AF_INET,SOCK_DGRAM)
server_addr = ('0.0.0.0',8888)
#bind綁定
sockfd.bind(server_addr)
print("Waiting for connect....")
while True:
print('Waiting for receive....')
#recvfrom接收
data,addr = sockfd.recvfrom(1024)
print('Receive data:'+ data.decode())
str_data = input("請輸入需要發(fā)送的信息:")
#sendto發(fā)送
sockfd.sendto(str_data.encode(),addr)
sockfd.close()
UDP_Client:
import socket
from socket import *
addr = ('127.0.0.1',8888)
sockfd = socket(AF_INET,SOCK_DGRAM)
while True:
data = input("請輸入需要發(fā)送的信息:")
#sendto發(fā)送
sockfd.sendto(data.encode(),addr)
#recvfrom接收
msg,addr = sockfd.recvfrom(1024)
print('From Server : '+msg.decode())
sockfd.close()
?TCP和UDP的服務(wù)器流程對比:左為TCP,右為UDP,可以看出二者比較下來UDP的流程要更少一些
?TCP和UDP客戶端流程對比:左TCP右UDP,可以看出二者客戶端大差不差但還是UDP簡潔一步
?通過對比我們還可以發(fā)現(xiàn),TCP中發(fā)送使用的是send,接收為recv,而在UDP中發(fā)送為sendto,接收為recvfrom,這也是二者之間較大的區(qū)別
網(wǎng)絡(luò)編程小結(jié)
TCP:安全,但復(fù)雜,發(fā)送為send,接收為recv
UDP:不安全,但簡便,發(fā)送為sendto,接受為recvfrom,服務(wù)器端:不用listen和accept,客戶端不用connect
5.文件操作
????????文件也是很有可能考大題的,但是不會單獨(dú)出一個(gè)大題去考文件,而是可能會和網(wǎng)絡(luò)編程和Qt結(jié)合起來去考一個(gè)或兩個(gè)大題
Python 中的文件操作主要涉及打開文件、讀寫文件內(nèi)容以及關(guān)閉文件。以下是這些操作的詳細(xì)介紹和常用函數(shù)。
1. 打開文件
首先,使用 open()
函數(shù)來打開一個(gè)文件
file = open('example.txt', 'r') # 打開文件以讀取
open()
函數(shù)的常用模式:
-
'r'
: 讀模式(默認(rèn)) -
'w'
: 寫模式(會先截?cái)辔募?/li> -
'x'
: 獨(dú)占創(chuàng)建模式,如果文件已存在會拋出異常 -
'a'
: 追加模式,寫入到文件的末尾 -
'b'
: 二進(jìn)制模式 -
't'
: 文本模式(默認(rèn)) -
'+'
: 更新(讀寫)模式
2. 讀取文件內(nèi)容
讀取整個(gè)文件:read()
讀取行:readline()或者readlines()
content = file.read() # 讀取整個(gè)文件
print(content)
line = file.readline() # 讀取一行
print(line)
all_lines = file.readlines() # 讀取所有行到一個(gè)列表中
print(all_lines)
3. 寫入文件
在寫入模式下('w'
, 'a'
等),可以使用以下方法:
寫入:write()
寫入字符串序列:writelines()
file = open('example.txt', 'w') # 以寫入模式打開
file.write("Hello, World!") # 寫入內(nèi)容
lines = ["First line", "Second line"]
file.writelines(lines) # 寫入多行
4. 關(guān)閉文件
file.close()
5. 使用?with
?語句操作文件
為了更好的管理文件的打開和關(guān)閉,通常使用 with
語句,它可以在代碼塊執(zhí)行完畢后自動(dòng)關(guān)閉文件。文章來源:http://www.zghlxwxcb.cn/news/detail-809520.html
with open('example.txt', 'r') as file:
for line in file:
print(line, end='')
到這里基本上就夠用了,主要還是記住open函數(shù)中的常用模式就可以,別的直接操作就行,沒有什么難的,其次注意與Qt或網(wǎng)絡(luò)編程的鏈接考題,努努力總能會的。?文章來源地址http://www.zghlxwxcb.cn/news/detail-809520.html
到了這里,關(guān)于Python高級技術(shù)復(fù)習(xí)指南的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!