Python3.x:經常使用基礎語法

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
來源:博客園
著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。

相關文章
相關標籤/搜索