Python3.x:經常使用基礎語法
1,if else語句:html
不執行if內的語句,須要用:passpython
if i>2: #跳過不執行 pass else: print("i= %s" %i)
2,日期轉字符:web
import datetime import time # 獲取日期 begin = datetime.date(2018,1,17) #日期轉字符,輸出格式:2018-01-17 begin .strftime('%Y-%m-%d')
3,字符轉日期:json
import datetime import time begin = time.strptime("2018-01-18", "%Y-%m-%d") print(begin) #輸出結果:time.struct_time(tm_year=2018, tm_mon=1, tm_mday=18, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=18, tm_isdst=-1) #獲取日期 y,m,d = begin[0:3] print(datetime.datetime(y,m,d)) #輸出結果: 2018-01-18 00:00:00 print(datetime.date(y,m,d)) #輸出結果:2018-01-18 #獲取時間 y,m,d = end_time[3:6] print(datetime.time(y,m,d)) #輸出結果:00:00:00
4,日期、時間比較:數組
#日期比較 #開始日期 begin = datetime.date(2018,1,10) #結束日期 end = datetime.date(2018,1,13) #循環日期間隔 for i in range((end - begin).days+1): #輸出日期間隔的每一天 print(begin+datetime.timedelta(days=i)) #時間比較 #結束時間 end_time = time.strptime("09:00:00", "%H:%M:%S") y,m,d = end_time[3:6] end_time = datetime.time(y,m,d) #開始時間 now_time = time.strftime("%H%M%S") print("end_time:%s now_time:%s" %(end_time,now_time)) #輸出結果:end_time:09:00:00 now_time:172537 print("%s , %s" %(int(end_time.strftime('%H%M%S')),int(now_time))) #輸出結果:90000 , 172537 if int(end_time.strftime('%H%M%S')) - int(now_time) <= 0: break #獲取字符日期'20180110'的次日 str_date = '20180110' #字符轉日期 begin = time.strptime(str_date, "%Y-%m-%d") y,m,d = begin[0:3] #日期加一天 r_date = datetime.date(y,m,d) + datetime.timedelta(days=1) #日期轉字符 r_date = r_date .strftime('%Y-%m-%d')
5,獲取當前日期:app
import datetime import time import locale # 獲取當前時間, 其中中包含了year, month, hour, 須要import datetime today = datetime.date.today() print(today) #輸出結果:2018-01-18 print(today.year) #輸出結果:2018 print(today.month) #輸出結果:1 print(today.day) #輸出結果:18 # 得到明天, 其餘依次類推 tomorrow = today + datetime.timedelta(days=1) print(tomorrow) #輸出結果:2018-01-19 # 使用time.strftime(format, p_tuple)獲取當前時間,須要import time print(time.strftime('%Y-%m-%d %H:%M:%S')) #輸出:2018-01-28 17:33:46 now = time.strftime("%H:%M:%S") print(now) #輸出結果:09:50:51 date = time.strftime("%Y%m%d") #輸出結果:20180122 date = time.strftime("%Y/%m/%d") #輸出結果:2018/01/22 #輸出帶中文的日期格式:2018年01月28日; #原理是:「在Windows裏,time.strftime使用C運行時的多字節字符串函數strftime,這個函數必須先根據當前locale配置來編碼格式化字符串(使用PyUnicode_EncodeLocale)。」若是不設置好locale的話,根據默認的"C" locale,底層的wcstombs函數會使用latin-1編碼(單字節編碼)來編碼格式化字符串,而後致使題主提供的多字節編碼的字符串在編碼時出錯。 locale.setlocale(locale.LC_CTYPE, 'chinese') print(time.strftime('%Y年%m月%d日')) #輸出帶中文的日期格式:2018年01月28日; #既然直接丟中文字符進去會出錯,那麼就繞過這個問題,丟(可能)永遠不會出錯的ascii字符進去充當佔位符,格式化完畢後再將佔位符換回中文字符。 print(time.strftime('%Y{y}%m{m}%d{d}').format(y='年', m='月', d='日')) # 使用datetime.now() now = datetime.datetime.now() print(now) #輸出結果:2018-01-18 09:52:30.789292 print(now.year) #輸出結果:2018 print(now.month) #輸出結果:1 print(now.day) #輸出結果:18 print(now.hour) #輸出結果:9 print(now.minute) #輸出結果:52 print(now.second) #輸出結果:30 print(now.microsecond) #輸出結果:789292
6,類定義、數組定義以及賦值:函數
#數組定義 list_rp = [] #實例化對象rp_entry(arf1,arg2,arg3) rp1 = rp_entry("1","2","3") rp2 = rp_entry("3","4","5") #屬性賦值必須先實例化,rp3 = rp_entry()這樣寫錯誤,必需要包含參數 rp3 = rp_entry("","","") rp3.arg1 = "7" rp3.arg2 = "8" rp3.arg3 = "9" #數組賦值 list_rp.append(p1) list_rp.append(p2) list_rp.append(p3) #取出數組內元素 for rp in list_rp: print(rp.arg1+" "+rp.arg2+" "+rp.arg3) #rp_entry定義 class rp_entry(object): #定義 __init__ def __init__(self, arg1,arg2, arg3): self.arg1= arg1 self.arg2= arg2 self.arg3= arg3 # 定義__get__ def __get__(self, instance, cls): if instance is None: return self else: return instance.__dict__[self.name] #定義__set__ def __set__(self, instance, value): instance.__dict__[self.name] = value #定義__delete__ def __delete__(self, instance): del instance.__dict__[self.name]
7,三目運算:post
#python並不支持? :這種符號所表達的先判斷再選擇的含義,但仍然有相應的語法支持 x = x+1 if x%2==1 else x
8,去掉字符串中空格:編碼
# 把頭和尾的空格去掉 str_ = str.strip() # 把左邊的空格去掉 str_ = str.lstrip() # 把右邊的空格去掉 str_ = str.rstrip()
9,命令行參數使用(傳遞多個參數,參數之間用空格隔開):url
#Python 提供了 getopt 模塊來獲取命令行參數。 #Python 中也能夠所用 sys 的 sys.argv 來獲取命令行參數: #sys.argv 是命令行參數列表。 #參數個數:len(sys.argv) #腳本名: sys.argv[0] #參數1: sys.argv[1] #參數2: sys.argv[2] import sys print ('參數個數爲:', len(sys.argv), '個參數。') print("腳本名:", sys.argv[0]) for i in range(1, len(sys.argv)): print("參數", i, sys.argv[i])
10,字符轉換:
#整數字符串轉換爲對應的整數 int('12') #小數字符串轉換爲對應小數 float('12.34') #數字轉換爲字符串 str(123.45) #ASCII碼轉換爲相應字符 chr(97) #字符轉換爲響應ASCII碼 ord('a')
11,判斷是否爲空:
if r_rp is None: pass else: print("This is not None")
12,print()輸出多個參數:
#參數:end_time,now_time print("end_time:%s now_time:%s" %(end_time,now_time))
13,判斷字符串中是否包含指定字符串:
#方法一:find函數實現 str = "www.cnblogs.com" if str.find("blog") == -1: print "No 'blog' here!" else: print "Found 'blog' in the string" # 方法二:in 方法實現 str = "www.cnblogs.com" if "blog" in str: print("Found 'blog' in the string")
14,獲取外界參數:
#方法1:args 是運行前輸入參數(不能在exe黑框中輸入,能夠用cmd窗口執行:shrjj.py 20180119); #方法2:input是運行時輸入參數(能夠在exe黑框中輸入); #建議用input獲取;輸入多個變量:a,b,c = eval(input()),輸入的時候必須用逗號隔開;
#args if len(sys.argv) < 2: print("傳遞的參數錯誤") else: vrg_date = sys.argv[1] print("sys.argv[1]: %s" %vrg_date) #input用法 vrg_date = input("請輸入日期(格式:20180116):") print("vrg_date: %s" %vrg_date) if len(vrg_date) ==8: print(vrg_date)
15,手動結束程序
# 在執行窗口按回車鍵,退出程序 input ("按回車鍵退出:")
16,追加內容寫入文本文件:
# 指定打開文件的模式,a爲追加,r爲只讀,w爲覆蓋寫入 file_object = open("E:/pydevworkspaces/product/tesetu/log_tesetu.txt", 'a+') # '\n'自動換行追加內容,還得配合打開文件模式爲a+ file_object.write(log_text+'\n') file_object.close()
17,for獲取數組裏面的元素:
li_list = ul.find_all('li') for i in range(0, len(li_list)): print(li_list[i].text.replace(' ',''))
18,去掉字符串中的換行:
# 利用replace替換掉換行符(/n) str_=str_.replace('\n','')
19,獲取當前py文件的目錄以及上級目錄:
import os print('***獲取當前目錄***') print(os.getcwd()) print(os.path.abspath(os.path.dirname(__file__))) print('***獲取上級目錄***') print(os.path.abspath(os.path.dirname(os.path.dirname(__file__)))) print(os.path.abspath(os.path.dirname(os.getcwd()))) print(os.path.abspath(os.path.join(os.getcwd(), ".."))) print('***獲取上上級目錄***') print(os.path.abspath(os.path.join(os.getcwd(), "../..")))
輸出結果:
***獲取當前目錄*** E:\SublimeWorks E:\SublimeWorks ***獲取上級目錄*** E:\ E:\ E:\ ***獲取上上級目錄*** E:\
20,logging模塊的用法:
import logging # 設置 logger = logging.getLogger() #set loghandler,文件在py所在的目錄下 file = logging.FileHandler("yzzq_jys.log") logger.addHandler(file) #set formater formatter = logging.Formatter("%(asctime)s %(levelname)s %(message)s") file.setFormatter(formatter) #set log level logger.setLevel(logging.NOTSET) #調用 if __name__ == '__main__': logger.info("傳遞參數錯誤,參數依次(參數之間用空格隔開)")
21,requests提交form data參數(post方式)
import requests from bs4 import BeautifulSoup url = "http://**********/monthview.action?action=china" headerDict = {'Host': '******', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.31 Safari/537.36', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8', 'Accept-Language': 'zh-CN,zh;q=0.8', 'Accept-Encoding': 'gzip, deflate', 'Referer': 'http://**********/monthview.action?action=china', 'Connection': 'keep-alive'} data = {'riqi': '2017年12月', 'channelFidStr': '4f8a220e5ca04a388ca4bae0d1226d0d', 'channelIdStr': '08ce523457dd47d2aad6b41246964535'} # psot 傳遞參數 res = requests.post(url,data=data,headers=headerDict) # 獲取跳轉後的頁面源碼 soup = BeautifulSoup(res.content, "html.parser")
22,遍歷json數組
res = requests.post(url, data=data, headers=headerDict) # 獲取跳轉後的頁面源碼,返回json串 soup = BeautifulSoup(res.content, "html.parser") print(soup) #輸出[{"channelName":"本月投資者狀況統計表","channelId":"08ce523457dd47d2aad6b41246964535"},{"channelName":"開通創業板功能的天然人投資者狀況表","channelId":"cc4707f4aa8f448a856592c8da0c9c37"},{"channelName":"開立的信用證券帳戶的投資者狀況表","channelId":"335db4403c8f45049a78a243550b0c44"}] #轉換json格式 array = json.loads(soup.text) # 遍歷json數組 for city in array: print(city['channelName'])
23,定義key-value
# 定義key-value status_process = { 'name1' : '閒置期', 'name2' : '播種期', 'name3' : '生長期', 'name4' : '採收期' } print(status_process['name1']) # 定義key-value數組 status_process = [ {'key1' : '閒置期','key2' : '播種期'}, {'name1' : '生長期','name2' : '採收期'} ] print(status_process[0]['key1']+" "+status_process[0]['key2'])
24,字符串的截取
str_s = '201801' print(str_s[0:4]) #輸出:2018 print(str_s[0:4]+'年'+str_s[4:6]+'月') #輸出:2018年01月
24,向上取整的方法
import math #小數向上取整math.ceil math.ceil(5/2) #輸出結果:3
24,月份操做
#月份加減 import datetime date_=datetime.datetime(2016,12,17) #方案一 import dateutil date_+dateutil.relativedelta.relativedelta(months=1) #方案二 import pandas as pd date_+pd.tseries.offsets.DateOffset(months=4,days=5)
做者:整合俠
連接:http://www.cnblogs.com/lizm166/p/8303700.html
來源:博客園
著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。