zoukankan      html  css  js  c++  java
  • 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+') 
    # '
    '自动换行追加内容,还得配合打开文件模式为a+
    file_object.write(log_text+'
    ')
    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('
    ','')

     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
    来源:博客园
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 相关阅读:
    理解爬虫原理
    中文词频统计与词云生成
    复合数据类型,英文词频统计
    字符串操作、文件操作,英文词频统计预处理
    了解大数据的特点、来源与数据呈现方式
    为Bootstrap模态对话框添加拖拽移动功能
    前端进阶学习笔记
    前端基础学习笔记
    MySQL学习笔记(模块二)
    MySQL学习笔记(模块一)
  • 原文地址:https://www.cnblogs.com/lizm166/p/8303700.html
Copyright © 2011-2022 走看看