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 = ''
#字符转日期
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("","","")
rp2 = rp_entry("","","")
#属性赋值必须先实例化,rp3 = rp_entry()这样写错误,必须要包含参数
rp3 = rp_entry("","","")
rp3.arg1 = ""
rp3.arg2 = ""
rp3.arg3 = ""
#数组赋值
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('')
#小数字符串转换为对应小数
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 = ''
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
来源:博客园
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Python3.x:常用基础语法的更多相关文章
- 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.单继 ...
- Oracle常用基础语法(未完待补和操作)
这篇博客主要是Oracle常用基础语法, 另外,存储过程和存储函数很重要,这个后期看视频学习,还有DB优化,另外,还有plsql develop和navicat的使用,重点是数据的导入导出: ---- ...
- Python3 与 C# 基础语法对比(就当Python和C#基础的普及吧)
文章汇总:https://www.cnblogs.com/dotnetcrazy/p/9160514.html 多图旧排版:https://www.cnblogs.com/dunitian/p/9 ...
- Python3 与 NetCore 基础语法对比(就当Python和C#基础的普及吧)
Jupyter排版:https://www.cnblogs.com/dotnetcrazy/p/9102030.html 汇总系列:https://www.cnblogs.com/dunitian/p ...
- Python3 与 C# 基础语法对比(Function专栏)
Code:https://github.com/lotapp/BaseCode 多图旧版:https://www.cnblogs.com/dunitian/p/9186561.html 在线编程: ...
- Python3 与 NetCore 基础语法对比(Function专栏)
Jupyter最新排版:https://www.cnblogs.com/dotnetcrazy/p/9175950.html 昨晚开始写大纲做demo,今天牺牲中午休息时间码文一篇,希望大家点点赞 O ...
- python3笔记<一>基础语法
随着AI人工智能的兴起,网络安全的普及,不论是网络安全工程师还是AI人工智能工程师,都选择了Python.(所以本菜也来开始上手Python) Python作为当下流行的脚本语言,其能力不言而喻,跨平 ...
- Python3 与 NetCore 基础语法对比(String专栏)
汇总系列:https://www.cnblogs.com/dunitian/p/4822808.html#ai Jupyter排版:https://www.cnblogs.com/dunitian/p ...
- Python3 系列之 基础语法篇
基础数据类型 整数 python 可以处理任意大小的整数 浮点数 python 可以处理任意大小的浮点数,但是需要注意的一点是:整数运算永远是精确的(除法也是精确的),而浮点数运算则可能会有四舍五入的 ...
随机推荐
- 40 个顶级 jQuery 图片、内容滑块和幻灯片
在这个快速发展的网络世界中,我们使用图片.内容滑块和幻灯片来给网站实现良好.有吸引力的外观.你可以吸引浏览者借助图像滑块让网站更加具有活力.使用 JavaScript 可以轻松实现轻量级的图片和内容滑 ...
- codevs 5965 [SDOI2017]新生舞会
分数规划的裸题. 不会分数规划的OIer.百度:胡伯涛<最小割模型在信息学竞赛中的应用> /* TLE1: last:add(i,j+n,1e9,(real)((real)a[i][j]- ...
- ORA-28000: the account is locked
1.用system账号登录 2.执行一下sql: ALTER USER username ACCOUNT UNLOCK; 此处username 可能为scott或者你要解锁的用户名. ........ ...
- vue模糊查询
模糊查询匹配结果 <!-- 搜索框 --> <div class="search-wrapper"> <input type="text&q ...
- 06.Curator Barrier
分布式Barrier是这样一个类: 它会阻塞所有节点上的等待进程,知道某一个被满足, 然后所有的节点继续进行. 比如赛马比赛中, 等赛马陆续来到起跑线前. 一声令下,所有的赛马都飞奔而 ...
- Hibernate的大对象映射
1在持久类中直接声明是java.sql.Blob类型 2在.hbm.xml文件中配置一下信息 <!-- 映射大对象 (就是字符长度超过255和图片想转换成二进制的数据)--> <!- ...
- Spark 源码分析 – BlockManagerMaster&Slave
BlockManagerMaster 只是维护一系列对BlockManagerMasterActor的接口, 所有的都是通过tell和askDriverWithReply从BlockManager ...
- TuShare获取K线数据
Tushare是一个免费.开源的python财经数据接口包.主要实现对股票等金融数据从数据采集.清洗加工 到 数据存储的过程,能够为金融分析人员提供快速.整洁.和多样的便于分析的数据,为他们在数据获取 ...
- mongodb批量插入数据
年前由于公司业务需要,后台需要获取流水记录,需要每天定时跑脚本,将流水记录跑入库里边,每天大概有个一百万左右,使用的数据库是mongodb,考虑到一条一条录入数据,100多万会跑断,就想着批量录入数据 ...
- 安全篇:弱密码python检测工具
安全篇:弱密码python检测工具 https://github.com/penoxcn/PyWeakPwdAudit