0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python-正則與簡單web服務(wù)器

汽車電子技術(shù) ? 來源: 程序猿知秋 ? 作者:程序猿知秋 ? 2023-02-16 15:48 ? 次閱讀

正則表達(dá)式

re模塊

  • Python中,可以通過使用** re 模塊**的正則表達(dá)式來匹配字符串

語法

import re


# 使用match方法進(jìn)行匹配操作
result=re.match(正則表達(dá)式,要匹配的字符串)


# 如果上面匹配到數(shù)據(jù)的話,要以使用group方法來提取數(shù)據(jù)
result.group()

單個字符匹配規(guī)則

字符 功能
. 匹配任意1個字符(除了\\n)
[ ] 匹配 [ ] 中列舉的字符
\\d 匹配數(shù)字,即 0~9
\\D 匹配非數(shù)字
\\s 匹配空白字符,即 空格、tab鍵
\\S 匹配非空白
\\w 匹配單詞字符,即 az 、AZ、0~9、_、中文
\\W 匹配非單詞字符

**多個字符匹配規(guī)則 **

字符 功能
* 匹配前一個字符出現(xiàn)0次或無限次,即可有可無
+ 匹配前一個字符出現(xiàn)1次或者無限次,即 至少1次
? 匹配前一個字符出現(xiàn)0次或1次,即 要么1次,要么沒有
{m} 匹配前一個字符出現(xiàn)m次
{m,n} 匹配前一個字符出現(xiàn)從m到n次

匹配分組

字符 功能
(ab) 將括號中的字符作為一個分組
\\num 引用分組 num匹配到字符串
(?P) 分組起別名
(?P=name) 引用別名為name分組匹配到的字符串

示例

import re


# 匹配單個字符
str_content="生化危機(jī)2"
t1=re.match(r"生化危機(jī)\\d",str_content)
print(t1.group())


# 匹配多個字符
str_content="孫悟空的手機(jī)是:13388888888"
t1=re.match(r"孫悟空的手機(jī)是:\\d{1,11}",str_content)
print(t1.group())


# 分組, 匹配郵箱,126、qq、163郵箱都可以, 郵箱中的 .需要使用 \ 轉(zhuǎn)義
str_content="孫悟空的郵箱是:sunwukong@163.com"
t1=re.match(r"孫悟空的郵箱是:\\w+@(126|163|qq)\\.com",str_content)
print(t1.group())

re模塊的高級用法

  • search、findall、sub、split

示例

# search 用法
str_content="孫悟空會72變"
t1=re.search(r"\\d+",str_content)
print(t1.group())
# 輸出結(jié)果:72


# findall 用法
str_content="孫悟空會72變,豬八戒會36變,二郎神會36變"
t1=re.findall(r"\\d+",str_content)
print(t1)
# 輸出結(jié)果:['72', '36', '36']


# sub 將匹配到的字符串進(jìn)行替換
str_content="孫悟空會 36 變"
t1=re.sub(r"\\d+","72",str_content)
print(t1)
# 輸出結(jié)果:孫悟空會 72 變


# split 根據(jù)匹配切割字符串,返回一個字符列表
str_content="孫悟空,豬八戒,沙和尚"
t1=re.split(r",",str_content)
print(t1)
# 輸出結(jié)果:['孫悟空', '豬八戒', '沙和尚']

注:Python 中字符串前面加上 r 表示原生字符串

  • 與大多數(shù)編程語言相同,正則表達(dá)式里使用 "" 作為轉(zhuǎn)義字符,這就可能會有反斜杠困擾。 如果你需要匹配的文本中有兩個 "" ,那么使用正則表達(dá)式里面就需要使用四個 "" (即 "\")
str_content="c:\\\\a"
# 不使用 r
t1=re.match("c:\\\\\\\\a",str_content)
print(t1.group())


# 使用 r
t1=re.match(r"c:\\\\a",str_content)
print(t1.group())

**輸出結(jié)果

**

圖片

web服務(wù)器

http協(xié)議

  • 在Web應(yīng)用中,服務(wù)器把網(wǎng)頁傳遞給瀏覽器,實(shí)際上就是把網(wǎng)頁的html代碼發(fā)送給瀏覽器,讓瀏覽器顯示出來,而瀏覽器和服務(wù)器之間的傳輸協(xié)議是HTTP
    • HTML 是一種用來定義網(wǎng)頁的文本,編寫網(wǎng)頁的代碼就是html語言
    • **HTTP **是在網(wǎng)絡(luò)上傳輸html的協(xié)議,用于瀏覽器和服務(wù)器之間的通信

訪問百度的示例

圖片

簡單web服務(wù)器

import socket




def main():
    # 創(chuàng)建tcp套接字
    so_server=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    # 綁定端口
    so_server.bind(("",33333))
    # 監(jiān)聽套接字
    so_server.listen(128)
    # 等待新客戶端接連
    new_socket,client_addr=so_server.accept()


    #接收瀏覽器發(fā)過來的請求
    request=new_socket.recv(1024)
    print(request)


    # 發(fā)送給瀏覽器數(shù)據(jù)
    content="HTTP/ 1.2 xxx\\r\\n"
    content+='\\r\\n'
    content+="hello world!!"
    new_socket.send(content.encode("utf-8"))




    # 關(guān)閉
    new_socket.close()
    so_server.close()


if __name__ == '__main__':
    main()

請求示例

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 模塊
    +關(guān)注

    關(guān)注

    7

    文章

    2628

    瀏覽量

    47213
  • 字符串
    +關(guān)注

    關(guān)注

    1

    文章

    567

    瀏覽量

    20435
  • python
    +關(guān)注

    關(guān)注

    54

    文章

    4758

    瀏覽量

    84289
收藏 人收藏

    評論

    相關(guān)推薦

    Labview與Web(二)---------------Web 服務(wù)器(原創(chuàng))

    ,還請告知,謝謝。版本:labview 2014/2013 在此我們只是先簡單紹一下web服務(wù)器,感興趣的朋友可以深入研究一下。文件->新建…->項(xiàng)目。我的電腦->新建->web
    發(fā)表于 04-20 18:14

    Labview與Web(二)---------------Web 服務(wù)器(原創(chuàng))

    簡單紹一下web服務(wù)器,感興趣的朋友可以深入研究一下。文件->新建…->項(xiàng)目。我的電腦->新建->web服務(wù)保存,并在保存目錄創(chuàng)建publi
    發(fā)表于 04-20 18:15

    使用Python創(chuàng)建簡單的FTP服務(wù)器

    通過 Python 的 -m 選項(xiàng)將 Pyftpdlib 模塊作為一個簡單的獨(dú)立服務(wù)器來運(yùn)行,假設(shè)我們需要共享目錄 /Users/Edu/Oldboy,只需要以下這個命令行就可以輕松實(shí)現(xiàn):$ cd
    發(fā)表于 05-04 16:17

    Python爬蟲與Web開發(fā)庫盤點(diǎn)

    可以更加直接的需求靈活搭配。Tornado全稱叫Tornado Web Server,目前是Facebook開源的一個版本,它和其他主流的框架有一個非常明顯的區(qū)別:就是非阻塞式服務(wù)器,速度非???。特別對于長輪詢,WebSocket等實(shí)時要求高的
    發(fā)表于 05-10 15:21

    web網(wǎng)站服務(wù)器并解析python文件

    ubuntu安裝apache web網(wǎng)站服務(wù)器并解析python文件
    發(fā)表于 05-13 11:51

    常見的嵌入式web服務(wù)器有哪些

    常見的嵌入式web服務(wù)器有:Lighttpd, Shttpd, Thttpd, Boa, Mini_httpd, Appweb, Goahead, luaopenwrt用的就是lua。當(dāng)然還有python實(shí)現(xiàn)的輕量級
    發(fā)表于 10-27 08:24

    如何實(shí)現(xiàn)對嵌入式WEB服務(wù)器系統(tǒng)的控制設(shè)計(jì)

    ......摘要工程實(shí)踐教學(xué)環(huán)節(jié)是為了學(xué)生能夠更好地鞏固和實(shí)踐所學(xué)專業(yè)知識而設(shè)置的,在本次工程實(shí)踐中,我們以ARM體系結(jié)構(gòu)與編程課程中所學(xué)知識為基礎(chǔ),對基于ARM的簡單嵌入式WEB服務(wù)器系統(tǒng)進(jìn)行了
    發(fā)表于 11-09 08:47

    如何在microPython上搭建一個簡單的HTTP WEB服務(wù)器

    在microPython上搭建一個簡單的HTTP WEB服務(wù)器microPython給會使用Python的人從事單片機(jī)開發(fā)提供了一個可能, 但是目前好像沒有一個成熟的
    發(fā)表于 12-08 07:59

    使用IIS為Web內(nèi)容配置Web服務(wù)器權(quán)限

      本文分步介紹如何使用 Internet 信息服務(wù) (IIS) 5.0 授予對 Web 內(nèi)容的 Web 服務(wù)器權(quán)限?! ?nbsp;  您可以對
    發(fā)表于 08-26 15:33 ?17次下載

    如何辨別Web服務(wù)器,應(yīng)用程序服務(wù)器,HTTP服務(wù)器

    Apache是純粹的web服務(wù)器,而Tomcat和IIS因?yàn)榫哂辛私忉寛?zhí)行服務(wù)器端代碼的能力,可以稱作為輕量級應(yīng)用服務(wù)器或帶有服務(wù)器功能的
    發(fā)表于 11-10 14:28 ?1038次閱讀

    pythonweb部署方式大全!

    Python Web服務(wù)器網(wǎng)關(guān)接口(Python Web Server Gateway Interface,縮寫為WSGI)是為
    的頭像 發(fā)表于 05-05 17:20 ?3119次閱讀
    <b class='flag-5'>python</b>的<b class='flag-5'>web</b>部署方式大全!

    嵌入式web服務(wù)器

    常見的嵌入式web服務(wù)器有:Lighttpd, Shttpd, Thttpd, Boa, Mini_httpd, Appweb, Goahead, luaopenwrt用的就是lua。當(dāng)然還有python實(shí)現(xiàn)的輕量級
    發(fā)表于 10-20 18:51 ?9次下載
    嵌入式<b class='flag-5'>web</b><b class='flag-5'>服務(wù)器</b>

    簡單的嵌入式web服務(wù)器設(shè)計(jì)

    、Safari。瀏覽是最經(jīng)常使用到的客戶端程序。WEB服務(wù)器 Web服務(wù)器一般指網(wǎng)站服務(wù)器,是
    發(fā)表于 10-21 11:07 ?11次下載
    <b class='flag-5'>簡單</b>的嵌入式<b class='flag-5'>web</b><b class='flag-5'>服務(wù)器</b>設(shè)計(jì)

    嵌入式web服務(wù)器系統(tǒng)設(shè)計(jì),基于-ARM簡單嵌入式WEB服務(wù)器系統(tǒng)設(shè)計(jì).doc

    ......摘 要工程實(shí)踐教學(xué)環(huán)節(jié)是為了學(xué)生能夠更好地鞏固和實(shí)踐所學(xué)專業(yè)知識而設(shè)置的,在本次工程實(shí)踐中,我們以ARM體系結(jié)構(gòu)與編程課程中所學(xué)知識為基礎(chǔ),對基于ARM的簡單嵌入式WEB服務(wù)器系統(tǒng)
    發(fā)表于 11-03 20:06 ?21次下載
    嵌入式<b class='flag-5'>web</b><b class='flag-5'>服務(wù)器</b>系統(tǒng)設(shè)計(jì),基于-ARM<b class='flag-5'>簡單</b>嵌入式<b class='flag-5'>WEB</b><b class='flag-5'>服務(wù)器</b>系統(tǒng)設(shè)計(jì).doc

    嵌入式web服務(wù)器系統(tǒng),嵌入式Web服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)

    摘要:嵌入式Web服務(wù)器是嵌入式系統(tǒng)應(yīng)用的一個重要組成部分.以其簡單,廉價,功能完善和通用性強(qiáng)等特點(diǎn),在遠(yuǎn)程監(jiān)控,智能家電和資源共享等多種場合得到廣泛應(yīng)用.本文以嵌入式Web
    發(fā)表于 11-04 11:06 ?27次下載
    嵌入式<b class='flag-5'>web</b><b class='flag-5'>服務(wù)器</b>系統(tǒng),嵌入式<b class='flag-5'>Web</b><b class='flag-5'>服務(wù)器</b>的設(shè)計(jì)與實(shí)現(xiàn)