Python3.x:常用基础语法详解编程语言

Python3.x:常用基础语法

1,if else语句:

 不执行if内的语句,需要用:pass

if i>2: 
    #跳过不执行 
    pass 
else: 
    print("i= %s" %i)

2,日期转字符:

import datetime   
import time 
# 获取日期 
begin = datetime.date(2018,1,17) 
#日期转字符,输出格式:2018-01-17 
begin .strftime('%Y-%m-%d')

3,字符转日期:

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,获取当前日期:

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,三目运算:

#python并不支持? :这种符号所表达的先判断再选择的含义,但仍然有相应的语法支持 
x = x+1 if x%2==1 else x

8,去掉字符串中空格:

# 把头和尾的空格去掉 
str_ = str.strip()  
# 把左边的空格去掉 
str_ = str.lstrip()  
# 把右边的空格去掉 
str_ = str.rstrip() 

 9,命令行参数使用(传递多个参数,参数之间用空格隔开):

#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)

 

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/16782.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论