首页 文章 精选 留言 我的

精选列表

搜索[python],共10000篇文章
优秀的个人博客,低调大师

python元组,集合类型,及字典补充

一、元组 元组与列表基本相同,不同之处在于元组只能存不能取,当多个值没有改的需求时,用元组更合适 元组的基本操作 1.创建元组: t = (1, 2, 3, 4, 2,4,) t = (1,) #单个元组的命名要加上逗号,否则识别为int型 2.需要掌握的操作: print(t.count(4))#返回4在元组中出现的次数 print(t.index(2,3,7))#返回2在元组中,从索引3开始查找到7所出现位置的索引 修改元组: 直接通过元组下标修改元组是非法的,不过可以通过凭借完成。 t = (1, 2, 3, ) t1 = (3, 4, 5,) t = t + t1 print(t)#结果(1, 2, 3, 4, 5) 删除元组:元组是无法删除的,只能通过del(会报错) 作业:将用户输入的菜名添加到元组中 思路:元组不可以直接添加内容,但是元组与元组之间是可以拼接的,通过将接受到的数据转换成元组,然后与一个空元组进行拼接。 # foods = () # for i in range(5): # food = tuple(input('请输入菜名:').strip()) # foods = foods+food # print(foods) 二、字典类型 键必须是唯一的,但值则不必。键重名时,后面声明的会覆盖前面的值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。 声明字典的几种方法: # 1. # dic = { # 'name': 'zfj', # 'age': 18, # 'sex': 'male', # } # print(dic) # 2. # dic1 = dict(name='zfj', age=18, sex='male',) # dic1 = dict(name='zfj', age=18, 2='male',)# 必须保证key为字符串类型,否则会报错 # print(dic1) # 3. # dic2 = dict([['name', 'zfj', ], ('age', 18, ), ('sex', 'male')]) # print(dic2) # 4.所有键的值都相同或者赋予初始值 # dic3 = {} # dic3 = dic3.fromkeys(('name', 'age', 'sex'), 'value1') # print(dic3) 访问字典:字典通过key访问值,要是访问不存在的key则会报错 dic = { 'name': 'zfj', 'age': 18, 'sex': 'male', } print(dic['job'])# 出错 修改字典: dic = { 'name': 'zfj', 'age': 18, 'sex': 'male', } dic['job'] = 'SH' print(dic) # 向字典中添加'job':'SH' dic['name'] = 'ZFJ' print(dic)# 修改字典中的'zfj'为'ZFJ' print(dic.get('name')) #get是获得键值为name的value dic1 = {'xxx': '111'} dic.update(dic1)# update 是将dic1中的内容添加到dic中 print(dic) setdefault的用法: dic.setdefault('name', 'dsb')#如果字典中已经存在key(‘name’)那么不修改原值 print(dic) dic.setdefault('job', 'SH')#如果字典中没有存在key(‘job’)那么添加内容置字典 print(dic) 删除字典: # dic.pop('age') # print(dic)# 按键值删除 # dic.popitem() # print(dic)# 随机返回并删除字典中的一对键和值(一般删除末尾对)。 # dic.clear() # print(dic)# 清空字典 三、集合 是一个无序不重复元素的序列 特点:1.每一个值都是不可变类型 2.元素不能重复 3.集合内的元素无序 用处:关系运算,去重 定义:在{}内用逗号分隔开的多个值或者set()函数创建集合。 注:创建一个空集合必须用set()而不是{ },因为{ }是用来创建一个空字典。 集合去重也具有局限性:1.无法保证原数据的顺序。2.当某一个数据中包含多个值全部为不可变类型才能使用集合 集合基本操作: # a = {'小明', '小李', '小王', 'abc'} # b = {'abc', 'qwe', 'fgh', '小李'} # print(a & b) # 交集 # print(a | b) #合集 # print(a ^ b) #对称差集 不包含交集的所有部分 # print(a - b)# a与b的差集 就是输出a中除了包含b中有的内容 # print(b - a)# b与a的差集 就是输出b中除了包含a中有的内容 添加,删除: # a.add('xiaowang') #添加,如果元素已存在,则不进行任何操作 # a.update('s') # a.update('b')# update不仅可以添加字符串还可以添加列表,元组,字典 # a.remove('小明')#删除'小明' 不存在则报错 # a.discard('小明')#删除, 不存在不会报错 # a.pop()#随机删除 print(a) 加油! 焚膏油以继晷,恒兀兀以穷年。

优秀的个人博客,低调大师

python字符串,列表常用操作

24天养成一个好习惯,第五天! 一、字符串需要掌握的操作 1.取值(索引取值)需要注意的是只能取,不能改 1 msg = 'hello world' 2 print(msg[4]) 2.切片(顾头不顾尾) 1 msg='hello world'#就是从一个大的字符串中切出一个全新的字符 2 print(msg[0:5]) 3 print(msg[::-1])#倒着取字符串里的数 3.长度len 1 msg = 'hello world' 2 print(len(msg))#len就是取字符串中所有字符的长度 4.成员运算 in和not in(判断一个字符串是否在一个大字符串中) 1 print('dsb' in 'xxx is dsb')#结果为True, 2 print('xxx' not in 'abc is dsb')#结果为True 5.strip,lstrip,rstrip 默认是去除字符串两边的空格,注意中间的空格无法去除 除了去除空格还可以去除别的内容 lstrip和rstrip与strip的区别就是,rstrip是去除右边需要去除的字符,而lstrip是去除左边需要去除的字符 6.切分split和join 将一个字符串按特定的符号切分成多个列表的形式,后面的数字代表切分的个数,至于,split和rsplit的区别就是从左切和从右切的区别 join:将切分的字符串再次拼接再一起 7.lower,upper,title lower:将字符串中的所有字母变为小写 upper:将字符串中的所有字母变为大写 title:将字符串中的所有字母变为首字母大写 8,startwith,endwith startswith()函数判断文本是否以某个字符开始,endswith()函数判断文本是否以某个字符结束。 9.replace replace中有三个参数,第一个为old(要替换的字符),第二个为new(替换成什么字符),第三个为需要替换的个数 10.isdigit 判断这个字符串是否为纯数字 需要了解的内容: 1.find,rfind,index,rindex 1 #find 2 str1 = "Zfj adf id tedafd!!!" 3 str2 = "id" 4 print(str1.find(str2)) 5 print(str1.find(str2, 5)) 6 print(str1.find(str2, 10)) 7 print(str1.rfind(str2)) 8 #index 9 str1 = "Zfj adf id tedafd!!!" 10 str2 = "id" 11 print(str1.index(str2)) 12 print(str1.rindex(str2)) 13 print(str1.index(str2,10))#错误,与find方法大致一样,只是index方法str不在str1中会报一个异常。 2.center,ljust,rjust,zfill 1 name = '123' 2 print(name.center(20, '*')) 3 print(name.ljust(20, '*')) 4 print(name.rjust(20, '*')) 5 print(name.zfill(20))#返回指定长度的字符串,原字符串右对齐,前面填充0。 3.expandtabs:把字符串中的 tab 符号('\t')转为空格,tab 符号('\t')默认的空格数是 8。 captalize:把字符串里的首字母变为大写 swapcase:把字符串里的字母大小写转换 4.其它is 1 name = 'zfj1234中' 2 print(name.isalnum()) #字符串由字母或数字组成 True 3 print(name.isalpha()) #字符串只由字母组成 True 4 n1 = '123' 5 n2 = '叁' 6 n3 = 'Ⅳ' 7 8 print(n1.isnumeric()) #True 9 print(n2.isnumeric()) #True 10 print(n3.isnumeric()) #True 二、列表常见操作 1.按索引取值 l1 = ['abc', 'cdf'] print(l[11]) 2.切片 l1 = ['abc', 'cdf', 'sdf', '11'] print(l1[2:5]) 3.in,not in ,len 与字符串大致无异 4.追加 通过append和insert添加数据至列表,append只能添加至列表的末尾,而insert可以指定位置添加 5.删除 通过del和remove删除列表中的数据,del通过索引删除,remove直接通过列表中的值删除 l1 = ['abc', 'cdf', 'sdf', '11'] # del l1[0] # print(l1) l1.remove('abc') print(l1)l1.pop()#默认最后一个,可以根据索引删除 6.改 l1 = ['abc', 'cdf', 'sdf', '11'] l1[0] = 'zfj' print(l1) 补充: #队列:先进先出 l = [] # 入队 # l.append('first') # l.append('second') # l.append('third') # print(l) # 出队 # print(l.pop(0)) # print(l.pop(0)) # print(l.pop(0)) #堆栈:先进后出 # 入栈: # l.append('first') # l.append('second') # l.append('third') # 出栈: # print(l.pop()) # print(l.pop()) # print(l.pop()) everyday learning! 焚膏油以继晷,恒兀兀以穷年。

优秀的个人博客,低调大师

Python 爬取周杰伦 instagram

整体框架 使用国内能访问的某国外 app angine 爬取Jay的 Instagram 并显示,再使用国内的 sae 访问这个网站,再爬取一次并发送到微博小号。 bs4 使用requests爬取 Instagram 时候,并没有加request header,Instagram 对 robot 还算友好,直接返回不带 js 的网页信息。通过bs4迅速定位到照片、视频信息,再用正则表达式提取到链接并下载、显示。,正则表达式让人头痛,使用str.split(' ')来使字符串变成列表。 from bs4 import BeautifulSoup filepath = 'C:\Users\hndx\Desktop\ins.html' soup = BeautifulSoup(open(filepath),'lxml') script = soup.select('script') print str(script[2]).split('},{"node":')[1] 通过分析ins.html,得到每个node就是一个动态。这样str(script[2]).split('},{"node":')[1]就是带有Jay最新动态信息的 Unicode 字符了。应用json 直接将这个信息转化成字典dict,如下 import json i = json.loads(info) print i["edge_media_to_caption"]['edges'] """ [{u'node': {u'text': u'Just finished now \u8b1d\u8b1d\u91d1\u83ef\u7684\u670b\u53cb\u5011 high\u7684\u4e0d\u8981\u4e0d\u8981\u7684 #\u91d1\u83ef #\u96d9\u7bc0\u68cd#\u96d9\u622a\u68cd'}}] """ 保存图片 参考 :如何用requests优雅的下载图片? ,这个应该是最简洁的答案了。 import requests s = requests.session() ss = s.get('https://www.baidu.com/img/bd_logo1.png') open('logo.png', 'wb').write(ss.content) 数据库 ORM Flask-SQLAlchemy 学习参考 Flask-SQLAlchemy 官方文档有关增删改查的操作 flask SQLAlchemy 数据库操作数据库对象 class photo(db.Model): __tablename__ = "photoid" id = db.Column(db.Integer) #参数 primary_key=True 表示此键值不能重复,必须有一个primary_key=True。 url = db.Column(db.String(4096),primary_key=True ) text = db.Column(db.String(4096)) def __init__(self, id, url,text): self.id = id self.url = url self.text = text #这里有三个行 关于创建、查找 In [1]: import flask_app In [2]: con = ['1','2'] In [3]: flask_app.photo(con[0],con[1]) Out[3]: <flask_app.photo at 0x7fa109b5ccd0> In [4]: flask_app.db.session.add(flask_app.photo(con[0],con[1])) In [5]: flask_app.db.session.commit() In [6]: flask_app.photo.query.filter_by(id='1').first() Out[6]: <flask_app.photo at 0x7fa11179e890> In [7]: p1 =flask_app.photo.query.filter_by(id='1').first() In [8]: p1.id Out[8]: 1 In [9]: p1.url Out[9]: u'2' Mysql 用到的语句 DROP TABLE table_name ; 删除数据表 insta.py # -*- coding: utf-8 -*- """ insta 爬虫 Created on Fri May 04 09:02:26 2018 @author: aubucuo """ import requests from json import loads from bs4 import BeautifulSoup import re s = requests.session() u = 'https://www.instagram.com/jaychou/' def ins(pid): rt = [] c1 = s.get(u) soup = BeautifulSoup(c1.content,'lxml') script = soup.select('script') ls = script[2].contents ls1 = re.findall('window._sharedData = (.+?);', str(ls[0])) js = loads(ls1[0])['entry_data']['ProfilePage'][0]['graphql']['user']['edge_owner_to_timeline_media']['edges'] j_id = js[0]['node']['id'] is_video =js[0]['node']['is_video'] j_url = js[0]['node']['display_url'] j_text = js[0]['node']['edge_media_to_caption']['edges'][0]['node']['text'] if j_id!= pid and not is_video: #如果id 不重复 且不是video rt.append(True) rt.append(j_id) rt.append(j_url) rt.append(j_text) c2 = s.get(j_url) open('mysite/static/jay.jpg', 'wb').write(c2.content) return rt else : rt.append(False) return rt 其中pid是上次执行时候最新一张图片的id,用来判断是否有更新。其实这里bs4对我的帮助并不大。上面程序只做到了保存最新的一张图片(jay.jpg),实测中,总是保存第二张图片,可能是正则表达式的问题。不影响功能,不再深究了。使用 json 精准定位N次,(注意到js变量) 发微博参见 微博API 学习记录

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册