Python3.x:常用基础语法

1,if else语句:

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

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

2,日期转字符:

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

3,字符转日期:

  1. import datetime
  2. import time
  3. begin = time.strptime("2018-01-18", "%Y-%m-%d")
  4. print(begin)
  5. #输出结果: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)
  6.  
  7. #获取日期
  8. y,m,d = begin[0:3]
  9. print(datetime.datetime(y,m,d))
  10. #输出结果: 2018-01-18 00:00:00
  11. print(datetime.date(y,m,d))
  12. #输出结果:2018-01-18
  13.  
  14. #获取时间
  15. y,m,d = end_time[3:6]
  16. print(datetime.time(y,m,d))
  17. #输出结果:00:00:00

4,日期、时间比较:

  1. #日期比较
  2. #开始日期
  3. begin = datetime.date(2018,1,10)
  4. #结束日期
  5. end = datetime.date(2018,1,13)
  6. #循环日期间隔
  7. for i in range((end - begin).days+1):
  8. #输出日期间隔的每一天
  9. print(begin+datetime.timedelta(days=i))
  10.  
  11. #时间比较
  12. #结束时间
  13. end_time = time.strptime("09:00:00", "%H:%M:%S")
  14. y,m,d = end_time[3:6]
  15. end_time = datetime.time(y,m,d)
  16. #开始时间
  17. now_time = time.strftime("%H%M%S")
  18. print("end_time:%s now_time:%s" %(end_time,now_time))
  19. #输出结果:end_time:09:00:00 now_time:172537
  20. print("%s , %s" %(int(end_time.strftime('%H%M%S')),int(now_time)))
  21. #输出结果:90000 , 172537
  22. if int(end_time.strftime('%H%M%S')) - int(now_time) <= 0:
  23. break
  24.  
  25. #获取字符日期'20180110'的第二天
  26. str_date = ''
  27. #字符转日期
  28. begin = time.strptime(str_date, "%Y-%m-%d")
  29. y,m,d = begin[0:3]
  30. #日期加一天
  31. r_date = datetime.date(y,m,d) + datetime.timedelta(days=1)
  32. #日期转字符
  33. r_date = r_date .strftime('%Y-%m-%d')

5,获取当前日期:

  1. import datetime
  2. import time
  3. import locale
  4.  
  5. # 获取当前时间, 其中中包含了year, month, hour, 需要import datetime
  6. today = datetime.date.today()
  7. print(today)
  8. #输出结果:2018-01-18
  9. print(today.year)
  10. #输出结果:2018
  11. print(today.month)
  12. #输出结果:1
  13. print(today.day)
  14. #输出结果:18
  15.  
  16. # 获得明天, 其他依次类推
  17. tomorrow = today + datetime.timedelta(days=1)
  18. print(tomorrow)
  19. #输出结果:2018-01-19
  20.  
  21. # 使用time.strftime(format, p_tuple)获取当前时间,需要import time
  22. print(time.strftime('%Y-%m-%d %H:%M:%S'))
  23. #输出:2018-01-28 17:33:46
  24.  
  25. now = time.strftime("%H:%M:%S")
  26. print(now)
  27. #输出结果:09:50:51
  28. date = time.strftime("%Y%m%d")
  29. #输出结果:20180122
  30. date = time.strftime("%Y/%m/%d")
  31. #输出结果:2018/01/22
  32.  
  33. #输出带中文的日期格式:2018年01月28日;
  34. #原理是:“在Windows里,time.strftime使用C运行时的多字节字符串函数strftime,这个函数必须先根据当前locale配置来编码格式化字符串(使用PyUnicode_EncodeLocale)。”如果不设置好locale的话,根据默认的"C" locale,底层的wcstombs函数会使用latin-1编码(单字节编码)来编码格式化字符串,然后导致题主提供的多字节编码的字符串在编码时出错。
  35. locale.setlocale(locale.LC_CTYPE, 'chinese')
  36. print(time.strftime('%Y年%m月%d日'))
  37.  
  38. #输出带中文的日期格式:2018年01月28日;
  39. #既然直接丢中文字符进去会出错,那么就绕过这个问题,丢(可能)永远不会出错的ascii字符进去充当占位符,格式化完毕后再将占位符换回中文字符。
  40. print(time.strftime('%Y{y}%m{m}%d{d}').format(y='年', m='月', d='日'))
  41.  
  42. # 使用datetime.now()
  43. now = datetime.datetime.now()
  44. print(now)
  45. #输出结果:2018-01-18 09:52:30.789292
  46. print(now.year)
  47. #输出结果:2018
  48. print(now.month)
  49. #输出结果:1
  50. print(now.day)
  51. #输出结果:18
  52. print(now.hour)
  53. #输出结果:9
  54. print(now.minute)
  55. #输出结果:52
  56. print(now.second)
  57. #输出结果:30
  58. print(now.microsecond)
  59. #输出结果:789292

6,类定义、数组定义以及赋值:

  1. #数组定义
  2. list_rp = []
  3. #实例化对象rp_entry(arf1,arg2,arg3)
  4. rp1 = rp_entry("","","")
  5. rp2 = rp_entry("","","")
  6. #属性赋值必须先实例化,rp3 = rp_entry()这样写错误,必须要包含参数
  7. rp3 = rp_entry("","","")
  8. rp3.arg1 = ""
  9. rp3.arg2 = ""
  10. rp3.arg3 = ""
  11. #数组赋值
  12. list_rp.append(p1)
  13. list_rp.append(p2)
  14. list_rp.append(p3)
  15. #取出数组内元素
  16. for rp in list_rp:
  17. print(rp.arg1+" "+rp.arg2+" "+rp.arg3)
  18.  
  19. #rp_entry定义
  20. class rp_entry(object):
  21. #定义 __init__
  22. def __init__(self, arg1,arg2, arg3):
  23. self.arg1= arg1
  24. self.arg2= arg2
  25. self.arg3= arg3
  26. # 定义__get__
  27. def __get__(self, instance, cls):
  28. if instance is None:
  29. return self
  30. else:
  31. return instance.__dict__[self.name]
  32. #定义__set__
  33. def __set__(self, instance, value):
  34. instance.__dict__[self.name] = value
  35. #定义__delete__
  36. def __delete__(self, instance):
  37. del instance.__dict__[self.name]

7,三目运算:

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

8,去掉字符串中空格:

  1. # 把头和尾的空格去掉
  2. str_ = str.strip()
  3. # 把左边的空格去掉
  4. str_ = str.lstrip()
  5. # 把右边的空格去掉
  6. str_ = str.rstrip()

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

  1. #Python 提供了 getopt 模块来获取命令行参数。
  2. #Python 中也可以所用 sys 的 sys.argv 来获取命令行参数:
  3. #sys.argv 是命令行参数列表。
  4. #参数个数:len(sys.argv)
  5. #脚本名: sys.argv[0]
  6. #参数1: sys.argv[1]
  7. #参数2: sys.argv[2]
  8.  
  9. import sys
  10. print ('参数个数为:', len(sys.argv), '个参数。')
  11. print("脚本名:", sys.argv[0])
  12. for i in range(1, len(sys.argv)):
  13. print("参数", i, sys.argv[i])

10,字符转换:

  1. #整数字符串转换为对应的整数
  2. int('')
  3. #小数字符串转换为对应小数
  4. float('12.34')
  5. #数字转换为字符串
  6. str(123.45)
  7. #ASCII码转换为相应字符
  8. chr(97)
  9. #字符转换为响应ASCII码
  10. ord('a')

11,判断是否为空:

  1. if r_rp is None:
  2. pass
  3. else:
  4. print("This is not None")

12,print()输出多个参数:

  1. #参数:end_time,now_time
  2. print("end_time:%s now_time:%s" %(end_time,now_time))

13,判断字符串中是否包含指定字符串:

  1. #方法一:find函数实现
  2. str = "www.cnblogs.com"
  3. if str.find("blog") == -1:
  4. print "No 'blog' here!"
  5. else:
  6. print "Found 'blog' in the string"
  7.  
  8. # 方法二:in 方法实现
  9. str = "www.cnblogs.com"
  10. if "blog" in str:
  11. print("Found 'blog' in the string")

14,获取外界参数:

  1. #方法1:args 是运行前输入参数(不能在exe黑框中输入,可以用cmd窗口执行:shrjj.py 20180119);
  2. #方法2:input是运行时输入参数(可以在exe黑框中输入);
  3. #建议用input获取;输入多个变量:a,b,c = eval(input()),输入的时候必须用逗号隔开;
  4. #args
  5. if len(sys.argv) < 2:
  6. print("传递的参数错误")
  7. else:
  8. vrg_date = sys.argv[1]
  9. print("sys.argv[1]: %s" %vrg_date)
  10.  
  11. #input用法
  12. vrg_date = input("请输入日期(格式:20180116):")
  13. print("vrg_date: %s" %vrg_date)
  14. if len(vrg_date) ==8:
  15. print(vrg_date)

15,手动结束程序

  1. # 在执行窗口按回车键,退出程序
  2. input ("按回车键退出:")

16,追加内容写入文本文件:

  1. # 指定打开文件的模式,a为追加,r为只读,w为覆盖写入
  2. file_object = open("E:/pydevworkspaces/product/tesetu/log_tesetu.txt", 'a+')
  3. # '\n'自动换行追加内容,还得配合打开文件模式为a+
  4. file_object.write(log_text+'\n')
  5. file_object.close()

17,for获取数组里面的元素:

  1. li_list = ul.find_all('li')
  2. for i in range(0, len(li_list)):
  3. print(li_list[i].text.replace(' ',''))

18,去掉字符串中的换行:

  1. # 利用replace替换掉换行符(/n)
  2. str_=str_.replace('\n','')

19,获取当前py文件的目录以及上级目录:

  1. import os
  2.  
  3. print('***获取当前目录***')
  4. print(os.getcwd())
  5. print(os.path.abspath(os.path.dirname(__file__)))
  6. print('***获取上级目录***')
  7. print(os.path.abspath(os.path.dirname(os.path.dirname(__file__))))
  8. print(os.path.abspath(os.path.dirname(os.getcwd())))
  9. print(os.path.abspath(os.path.join(os.getcwd(), "..")))
  10. print('***获取上上级目录***')
  11. print(os.path.abspath(os.path.join(os.getcwd(), "../..")))

输出结果:

  1. ***获取当前目录***
  2. E:\SublimeWorks
  3. E:\SublimeWorks
  4. ***获取上级目录***
  5. E:\
  6. E:\
  7. E:\
  8. ***获取上上级目录***
  9. E:\

20,logging模块的用法:

  1. import logging
  2.  
  3. # 设置
  4. logger = logging.getLogger()
  5. #set loghandler,文件在py所在的目录下
  6. file = logging.FileHandler("yzzq_jys.log")
  7. logger.addHandler(file)
  8. #set formater
  9. formatter = logging.Formatter("%(asctime)s %(levelname)s %(message)s")
  10. file.setFormatter(formatter)
  11. #set log level
  12. logger.setLevel(logging.NOTSET)
  13.  
  14. #调用
  15. if __name__ == '__main__':
  16. logger.info("传递参数错误,参数依次(参数之间用空格隔开)")

21,requests提交form data参数(post方式)

  1. import requests
  2. from bs4 import BeautifulSoup
  3.  
  4. url = "http://**********/monthview.action?action=china"
  5. headerDict = {'Host': '******',
  6. 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.31 Safari/537.36',
  7. 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
  8.   'Accept-Language': 'zh-CN,zh;q=0.8',
  9.   'Accept-Encoding': 'gzip, deflate',
  10.   'Referer': 'http://**********/monthview.action?action=china',
  11. 'Connection': 'keep-alive'}
  12. data = {'riqi': '2017年12月', 'channelFidStr': '4f8a220e5ca04a388ca4bae0d1226d0d', 'channelIdStr': '08ce523457dd47d2aad6b41246964535'}
  13. # psot 传递参数
  14. res = requests.post(url,data=data,headers=headerDict)
  15. # 获取跳转后的页面源码
  16. soup = BeautifulSoup(res.content, "html.parser")

22,遍历json数组

  1. res = requests.post(url, data=data, headers=headerDict)
  2. # 获取跳转后的页面源码,返回json串
  3. soup = BeautifulSoup(res.content, "html.parser")
  4. print(soup)
  5. #输出[{"channelName":"本月投资者情况统计表","channelId":"08ce523457dd47d2aad6b41246964535"},{"channelName":"开通创业板功能的自然人投资者情况表","channelId":"cc4707f4aa8f448a856592c8da0c9c37"},{"channelName":"开立的信用证券账户的投资者情况表","channelId":"335db4403c8f45049a78a243550b0c44"}]
  6. #转换json格式
  7. array = json.loads(soup.text)
  8. # 遍历json数组
  9. for city in array:
  10. print(city['channelName'])

23,定义key-value

  1. # 定义key-value
  2. status_process = {
  3. 'name1' : '闲置期',
  4. 'name2' : '播种期',
  5. 'name3' : '生长期',
  6. 'name4' : '采收期'
  7. }
  8. print(status_process['name1'])
  9.  
  10. # 定义key-value数组
  11. status_process = [
  12. {'key1' : '闲置期','key2' : '播种期'},
  13. {'name1' : '生长期','name2' : '采收期'}
  14. ]
  15. print(status_process[0]['key1']+" "+status_process[0]['key2'])

24,字符串的截取

  1. str_s = ''
  2. print(str_s[0:4])
  3. #输出:2018
  4. print(str_s[0:4]+'年'+str_s[4:6]+'月')
  5. #输出:2018年01月

24,向上取整的方法

  1. import math
  2.  
  3. #小数向上取整math.ceil
  4. math.ceil(5/2)
  5. #输出结果:3

24,月份操作

  1. #月份加减
  2. import datetime
  3. date_=datetime.datetime(2016,12,17)
  4. #方案一
  5. import dateutil
  6. date_+dateutil.relativedelta.relativedelta(months=1)
  7. #方案二
  8. import pandas as pd
  9. date_+pd.tseries.offsets.DateOffset(months=4,days=5)

作者:整合侠
链接:http://www.cnblogs.com/lizm166/p/8303700.html
来源:博客园
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Python3.x:常用基础语法的更多相关文章

  1. Python3 与 C# 面向对象之~继承与多态 Python3 与 C# 面向对象之~封装 Python3 与 NetCore 基础语法对比(Function专栏) [C#]C#时间日期操作 [C#]C#中字符串的操作 [ASP.NET]NTKO插件使用常见问题 我对C#的认知。

    Python3 与 C# 面向对象之-继承与多态   文章汇总:https://www.cnblogs.com/dotnetcrazy/p/9160514.html 目录: 2.继承 ¶ 2.1.单继 ...

  2. Oracle常用基础语法(未完待补和操作)

    这篇博客主要是Oracle常用基础语法, 另外,存储过程和存储函数很重要,这个后期看视频学习,还有DB优化,另外,还有plsql develop和navicat的使用,重点是数据的导入导出: ---- ...

  3. Python3 与 C# 基础语法对比(就当Python和C#基础的普及吧)

      文章汇总:https://www.cnblogs.com/dotnetcrazy/p/9160514.html 多图旧排版:https://www.cnblogs.com/dunitian/p/9 ...

  4. Python3 与 NetCore 基础语法对比(就当Python和C#基础的普及吧)

    Jupyter排版:https://www.cnblogs.com/dotnetcrazy/p/9102030.html 汇总系列:https://www.cnblogs.com/dunitian/p ...

  5. Python3 与 C# 基础语法对比(Function专栏)

      Code:https://github.com/lotapp/BaseCode 多图旧版:https://www.cnblogs.com/dunitian/p/9186561.html 在线编程: ...

  6. Python3 与 NetCore 基础语法对比(Function专栏)

    Jupyter最新排版:https://www.cnblogs.com/dotnetcrazy/p/9175950.html 昨晚开始写大纲做demo,今天牺牲中午休息时间码文一篇,希望大家点点赞 O ...

  7. python3笔记<一>基础语法

    随着AI人工智能的兴起,网络安全的普及,不论是网络安全工程师还是AI人工智能工程师,都选择了Python.(所以本菜也来开始上手Python) Python作为当下流行的脚本语言,其能力不言而喻,跨平 ...

  8. Python3 与 NetCore 基础语法对比(String专栏)

    汇总系列:https://www.cnblogs.com/dunitian/p/4822808.html#ai Jupyter排版:https://www.cnblogs.com/dunitian/p ...

  9. Python3 系列之 基础语法篇

    基础数据类型 整数 python 可以处理任意大小的整数 浮点数 python 可以处理任意大小的浮点数,但是需要注意的一点是:整数运算永远是精确的(除法也是精确的),而浮点数运算则可能会有四舍五入的 ...

随机推荐

  1. A Great List of Windows Tools

    Windows is an extremely effective and a an efficient operating system. Like any other operating syst ...

  2. hdu1071(定积分求面积)

    太弱了,写了一下午,高中基础太差的孩子伤不起... 记住抛物线是关于x轴对称的. 而且抛物线的方程可以是: y=k(x-h)+c  //其中(h,c)为顶点坐标 The area Time Limit ...

  3. 树形结构数据存储方案的选择和java list转tree

    树形结构数据存储方案 Adjacency List:每一条记录存parent_idPath Enumerations:每一条记录存整个tree path经过的node枚举Nested Sets:每一条 ...

  4. Android开源天气预报应用Weather-Lite

    由于最近繁忙的工作告一段落,要清闲一段时间,所以可以好好利用这段时间给自己充充电. 于是乎这个app就诞生了.本着开源的精神我把它放在了github上.这里如果有Android初学者的话不妨学习一下, ...

  5. SpringCloud--注册中心Eureka

    Eureka的服务治理设计中,所有节点即是服务提供方,也是服务消费方. Eureka Server的高可用:就是将自己作为服务向其他服务注册中心注册自己,形成一组互相注册的服务注册中心,实现服务清单的 ...

  6. 自动生成项目的Makefile文件

    自动生成项目的Makefile文件 理论基础 跟我一起写 Makefile:   http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=4 ...

  7. 新团建立时间 timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

    w 不根据当前时间戳更新. `wtime` timestamp NULL DEFAULT CURRENT_TIMESTAMP,

  8. activate mod_rewrite How To Set Up mod_rewrite for Apache on Ubuntu 14.04 Apache Rewrite url重定向功能的简单配置

    https://www.digitalocean.com/community/tutorials/how-to-set-up-mod_rewrite-for-apache-on-ubuntu-14-0 ...

  9. 剑指Offer——二叉搜索树与双向链表

    题目描述: 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向. 分析: 二叉搜索树,中序遍历就是排序的. 所以我们利用中序遍历,将前后两 ...

  10. java7(2)——使用mutilcatch注意事项

    从java7推出mutilcatch后,到现在都少有看到人使用,可能是这个功能真正用起来,比起多个catch并不快多少,而且现在的工IDE具太厉害了,什么都有快捷键!说是这么说,我们还是得了解一下如何 ...