python中re time os sys模塊
阿新 • • 發佈:2018-07-02
SYS模塊 none 退出程序 一個數 bre 輸出格式 flags port 個數 re模塊
正則表達式
這裏寫反斜杠也是轉義的意思,python在re模塊中使用都需要加反斜杠
- \d 是匹配一個數字
- \+ 大於等於1
- \w 匹配數字字母下劃線和中橫杠
- \* 匹配0個或多個
- \t 指標符
- . 除了回車意外的的所有
- * 大於等於0
- + 大於等於1
- ? 0或1
- {m},{m,n} 出現m次,出現m到n次,包括mn
re匹字符串
re.match()
- re.match(pattern, string, flags)
默認有3個參數,是最後一個我們不是很關註他,就默認。
通過你前面寫的pattern(正則表達式的意思),匹配後面的string(字符串),他只能在你給的字符串的起始位置查找,註意和search的區別。re.search()
他和match有相同的作用,但是有區別。他會在整個字符串內容中匹配,直到找到第一個相匹配的字符串。
re.findall()
他和match和search差不多,但是他是找出字符串中所有的
import re result1 = re.match(‘\d+‘,‘dshfjasdsf23432dhfhsjdjfhjsd‘) if result1: print result1.group() result2 = re.search(‘\d+‘,‘dshfjasdsf23432dhfhsjdjfhjsd‘) print result2 print result2.group() result3 = re.findall(‘\d+‘,‘dshfjasdsf23432dhfhsjdjfhjsd34‘) print result3 #輸出結果: <_sre.SRE_Match object at 0x0000000002BFA510> 23432 [‘23432‘, ‘34‘]
編譯正則表達式
re.compile
他和編譯生成的.pyc文件差不多,.pyc是為了再次使用時快速調用。正則表達式也可以經過編譯,編譯之後匹配其他的也會加快匹配速度
com = re.compile(‘\d+‘) print type(com) 輸出結果: <type ‘_sre.SRE_Pattern‘> 他返回了一個對象
- 使用方法:
也就是直接調用返回對象findall函數com = re.compile(‘\d+‘) print com.findall(‘dshfjasdsf23432dhfhsjdjfhjsd34‘)
練習
- 匹配一個文件中的所有字符串
import re f = open(‘love.txt‘,‘r‘) feitian = f.read() f.close() print re.findall(‘a‘,feitian) ##也可以一行一行的匹配 f = open("love.txt", "r") while True: line = f.readline() if line: line=line.strip() p=line.rfind(‘.‘) filename=line[0:p] print line else: break f.close() 輸出: [‘a‘, ‘a‘, ‘a‘]
正則表達式中的分組
result2 = re.search(‘(\d+)\w*(\d+)‘,‘dshfjasdsf23432dhfhs23423jdjfhjsd‘)
print result2.group()
print result2.groups()
#輸出結果:
23432dhfhs23423
(‘23432‘, ‘3‘)
#註意: 他不重復拿,這裏解釋一下為什麽第二個輸出為3,因為中間都被\w*接收了,這裏我們在給一個例子
result2 = re.search(‘(\d+)dhfhs(\d+)‘,‘dshfjasdsf23432dhfhs23423jdjfhjsd‘)
print result2.group()
print result2.groups()
輸出結果:
23432dhfhs23423
(‘23432‘, ‘23423‘)
練習
- 匹配一個字符串中的ip
import re ip = ‘sdhflsdhfj1723.234.234234.df.34.1234.df.324.xc.3+dsf172.25.254.1 sdfjk2130sdkjf.sdjfs‘ result1 = re.findall(‘(?:\d{1,3}\.){3}\d{1,3}‘,ip) result2 = re.findall(‘[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}‘,ip) print result1 print result2 #輸出結果: [‘172.25.254.1‘] [‘172.25.254.1‘]
time 模塊
時間的表示方式
import time
print time.time()
1510923748.06
#計算從1970年1月1日到現在有多少秒
print time.gmtime()
time.struct_time(tm_year=2017, tm_mon=11, tm_mday=17, tm_hour=13, tm_min=2, tm_sec=28, tm_wday=4, tm_yday=321, tm_isdst=0)
格式化成一個對象,他是當前的時間
print time.strftime(‘%Y%m%d‘)
20171117
輸出格式化之後的時間,他的格式化和linux一樣
他們之間的轉換
print time.strptime(‘2017-11-17‘,‘%Y-%m-%d‘)
time.struct_time(tm_year=2017, tm_mon=11, tm_mday=17, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=321, tm_isdst=-1)
#將字符串轉化成結構化的時間格式
print time.localtime()
print time.mktime(time.localtime())
time.struct_time(tm_year=2017, tm_mon=11, tm_mday=17, tm_hour=21, tm_min=17, tm_sec=57, tm_wday=4, tm_yday=321, tm_isdst=0)
1510924677.0
#結構化的時間轉化成時間戳的格式
#字符串格式的時間轉時間戳格式他不能直接轉,必須要中轉
第一部分時間戳形式存在,第二部分以結構化形式存在,第三部分以字符串形式存在
os模塊
- os.sep可以取代操作系統特定的路徑分隔符。windows下為 “\”
- os.name字符串指示你正在使用的平臺。比如對於Windows,它是‘nt‘,而對於Linux/Unix用戶,它是‘posix‘。
- os.getcwd()函數得到當前工作目錄,即當前Python腳本工作的目錄路徑。
- os.getenv()獲取一個環境變量,如果沒有返回none
- os.putenv(key, value)設置一個環境變量值
- os.listdir(path)返回指定目錄下的所有文件和目錄名。
- os.remove(path)函數用來刪除一個文件。
- os.system(command)函數用來運行shell命令。
- os.linesep字符串給出當前平臺使用的行終止符。例如,Windows使用‘\r\n‘,Linux使用‘\n‘而Mac使用‘\r‘。
- os.path.split(p)函數返回一個路徑的目錄名和文件名。
- os.path.isfile()和os.path.isdir()函數分別檢驗給出的路徑是一個文件還是目錄。
- os.path.existe()函數用來檢驗給出的路徑是否真地存在
- os.curdir:返回當前目錄(‘.‘)
- os.chdir(dirname):改變工作目錄到dirname
- os.path.getsize(name):獲得文件大小,如果name是目錄返回0L
- os.path.abspath(name):獲得絕對路徑
- os.path.normpath(path):規範path字符串形式
- os.path.splitext():分離文件名與擴展名
- os.path.join(path,name):連接目錄與文件名或目錄
- os.path.basename(path):返回文件名
- os.path.dirname(path):返回文件路徑
- os.stat() 相當於 Linux 下 stat 命令
- os.listdir() 列出給定目錄的內容
- os.mkdir(path) 創建目錄
- os.mkdirs(path) 創建目錄樹,相當於mkdir -p 操作
sys模塊
- sys.argv 獲取傳遞給腳本的參數,參數解析類似於 bash 的方式,第
一個參數代表腳本本身 - sys.exit(n) 退出程序,正常退出時exit(0)
- sys.version 獲取Python解釋程序的版本信息
- sys.maxint 最大的Int值
- sys.path 返回模塊的搜索路徑,初始化時使用PYTHONPATH環境變量的值
- sys.platform 返回操作系統平臺名稱
python中re time os sys模塊