python 其他備忘

re、sqlite3魏铅、socket...

re match

import re

pattern = re.compile(r'Hello')
match = pattern.match('Hello there~')

print match

if match:
    print match.group()
else:
    print 'No match.'

print u'以上是有匹配結(jié)果的示例'
print u'********************'
print u'以下是無匹配結(jié)果的示例'

pattern2 = re.compile(r'Python')
match2 = pattern2.match('Hello there~')

print match2

if match2:
    print match2.group()
else:
    print 'No match.'

輸出結(jié)果

<_sre.SRE_Match object at 0x101eebd30>
Hello
以上是有匹配結(jié)果的示例
********************
以下是無匹配結(jié)果的示例
None
No match.

re search

import re

string = "I'm leaning python on this website."
pattern = re.compile(r'python')

match = pattern.match(string)
search = pattern.search(string)

if match:
    print u'match 結(jié)果:' + match.group()
else:
    print u'match 結(jié)果:No match.'

if search:
    print u'search 結(jié)果:' + search.group()
else:
    print u'search 結(jié)果:No search.'

輸出結(jié)果

match 結(jié)果:No match.
search 結(jié)果:python

區(qū)別
match() 只匹配字符串的起始勉吻,如果開始不匹配,便會返回 None忘晤,而 search() 是從頭至尾對字符串進(jìn)行匹配

re sub

將 2017-10-01 這個(gè)字符串變成 2017/10/01

import re

time = '2017-10-01'
pattern = re.compile(r'\D')    # \D 表示匹配任意非數(shù)字
sub = pattern.sub('/', time)   # sub(替換后的字符宛蚓,要匹配的字符串)
print sub

print re.sub(r'\D', '/', time) # 簡化寫法

正則表達(dá)匹配

匹配電話號碼

import re

phone = raw_input('phone number:')
pattern = re.compile('^0\d{2,3}\d{7,8}$|^1[3578]\d{9}$|^147\{8}$')
match = pattern.match(phone)

if match:
    print(match.group())
else:
    print('error')

正則表達(dá)式說明

^  表示匹配字符串開頭
$  表示匹配字符串結(jié)尾
\d 表示匹配任意數(shù)字

^0\d{2,3}\d{7,8}$ 為座機(jī)格式
0是第一個(gè)數(shù)字,后面接2到3個(gè)數(shù)字自稱區(qū)號设塔,加上7或8位電話號

^1[3578]\d{9}$ 為手機(jī)號格式
1是第一個(gè)數(shù)字凄吏,第二個(gè)數(shù)字可能是3578,后面接9位數(shù)字

^147\{8}$ 為移動(dòng)特殊號段
以147開頭,后面接8位數(shù)字

更多正則表達(dá)式參考 http://www.regexlab.com/zh/regref.htm

sqlite3數(shù)據(jù)庫

import sqlite3

# **創(chuàng)建數(shù)據(jù)庫**
connect = sqlite3.connect('test.db')  # 創(chuàng)建數(shù)據(jù)庫
cursor = connect.cursor()  # 創(chuàng)建游標(biāo)痕钢,以使用 sql 語句

# **查詢數(shù)據(jù)庫中已存在的表**
def searchTable(str):
    global cursor
    flag = False
    cursor.execute("SELECT name FROM sqlite_master WHERE type = 'table'")
    for item in cursor.fetchall():
        print item  # 結(jié)果為元組 (u'diary',)
        if item[0] == str:
            flag = True
            break
    return flag

# **創(chuàng)建表**
#創(chuàng)建一個(gè)名為 diary 的表图柏,并設(shè)置一個(gè) id 為自增主鍵,title盖喷、content 為 text 類型
def initTable(str):
    global cursor
    if searchTable(str) == False:
        sql = "CREATE TABLE " + str + "(id INTEGER PRIMARY KEY AUTOINCREMENT, title TEXT, content TEXT)"
        cursor.execute(sql)
    else:
        print u'該表已存在'

initTable('diary')

# **增**
#向表中插入數(shù)據(jù)爆办,因?yàn)槭亲栽鲋麈I,id可以寫成NULL课梳,表中 id 值會是1距辆、2、3……遞增
cursor.execute("INSERT INTO diary VALUES(NULL, 'title1', 'content1')")
#或者寫成這樣
cursor.execute("INSERT INTO diary(title, content) VALUES('title2', 'content2')")
#查詢表中所有數(shù)據(jù)并輸出
for row in cursor.execute("SELECT * FROM diary"):
    print row
print u'***** 增 *****'
# 函數(shù)形式例
# def insertData(name, tup):
#     global connect
#     global cursor
#     sql = "INSERT INTO " + name + "(title, content) VALUES (?, ?)"
#     cursor.execute(sql, tup)
#     connect.commit()

# **刪**
#刪除表中 id 為 1 的數(shù)據(jù)
cursor.execute("DELETE FROM diary WHERE id = 1")
#查詢表中所有數(shù)據(jù)并輸出
for row in cursor.execute("SELECT * FROM diary"):
    print row
print u'***** 刪 *****'

# **改**
#修改 id 為 2 的數(shù)據(jù)
cursor.execute("UPDATE diary SET title = 'title0', content = 'content0' WHERE id = 2")
#查詢表中所有數(shù)據(jù)并輸出
for row in cursor.execute("SELECT * FROM diary"):
    print row
print u'***** 改 *****'

# **查**
items = [('111','222'),('333', '444'),('555','666')]
# executemany 一次向表中插入多條數(shù)據(jù)
cursor.executemany("INSERT INTO diary(title, content) VALUES (?, ?)", items)
print u'插入多條數(shù)據(jù)后的表'
for row in cursor.execute("SELECT * FROM diary"):
    print row

print u"查 id 為 5 的數(shù)據(jù):"
cursor.execute("SELECT * FROM diary WHERE id = 5")
print cursor.fetchall()

print u"查 title 為 333 的數(shù)據(jù):"
cursor.execute("SELECT * FROM diary WHERE title = '333'")
print cursor.fetchall()

# **刪除表**
def dropTable(self, tableName):
    sql = 'DROP TABLE IF EXISTS ' + tableName
    self.cursor.execute(sql)
    self.connect.commit()
    return '表已刪除或不存在'

# **清空表**
def clearTable(self, tableName):
    sql = 'DELETE FROM ' + tableName
    reset = "'UPDATE sqlite_sequence SET seq = 0 WHERE name = '" + tableName + "'"
    self.cursor.execute(sql)
    self.cursor.execute(reset)
    self.connect.commit()
    return '表已清空'

cursor.close()
connect.close()

socket

服務(wù)端

import socket                        #導(dǎo)入socket模塊
s = socket.socket()                  #初始化socket對象
s.bind(('127.0.0.1', 1234))          #綁定端口

s.listen(5)                          #等待客戶端連接
while True:
    c, addr = s.accept()             #客戶端連接后暮刃,得到connect和address
    print u'連接地址為:', addr
    c.send('成功連接至服務(wù)器端...')    #向客戶端發(fā)送消息

    dict = eval(c.recv(1024))  #eval() 將字符串轉(zhuǎn)為為字典
    if dict:
        print dict, dict['title'], dict['content']

    c.close()                        #關(guān)閉連接

# 解決端口被占用問題
# lsof -i:1234
# kill *****(進(jìn)程PID)

客戶端

import socket                        #導(dǎo)入socket模塊
s = socket.socket()                  #初始化socket對象
s.connect(('127.0.0.1',1234))

print s.recv(1024)

dict = {'title': 'title1', 'content': 'content1'}
s.send(str(dict))  #轉(zhuǎn)換為字符串后發(fā)送

s.close()

終端結(jié)果
服務(wù)端

連接地址為: ('127.0.0.1', 50875)
{'content': 'content1', 'title': 'title1'} title1 content1

客戶端

成功連接至服務(wù)器端...
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末跨算,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子椭懊,更是在濱河造成了極大的恐慌诸蚕,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件氧猬,死亡現(xiàn)場離奇詭異背犯,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)盅抚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進(jìn)店門漠魏,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人妄均,你說我怎么就攤上這事柱锹。” “怎么了丰包?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵禁熏,是天一觀的道長。 經(jīng)常有香客問我邑彪,道長瞧毙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任寄症,我火速辦了婚禮升筏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘瘸爽。我一直安慰自己您访,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布剪决。 她就那樣靜靜地躺著灵汪,像睡著了一般檀训。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上享言,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天峻凫,我揣著相機(jī)與錄音,去河邊找鬼览露。 笑死荧琼,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的差牛。 我是一名探鬼主播命锄,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼偏化!你這毒婦竟也來了脐恩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤侦讨,失蹤者是張志新(化名)和其女友劉穎驶冒,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體韵卤,經(jīng)...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡骗污,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了沈条。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片身堡。...
    茶點(diǎn)故事閱讀 40,146評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖拍鲤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情汞扎,我是刑警寧澤季稳,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站澈魄,受9級特大地震影響景鼠,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜痹扇,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一铛漓、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧鲫构,春花似錦浓恶、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽湿镀。三九已至,卻和暖如春伐憾,著一層夾襖步出監(jiān)牢的瞬間勉痴,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工树肃, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蒸矛,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓胸嘴,卻偏偏與公主長得像雏掠,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子筛谚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,107評論 2 356