您的位置:365bet体育备用网址器 > 应用 > 接下去是字符串的操作

接下去是字符串的操作

2019-12-26 18:32

python修行之路(五 列表与字典),python修行

学完了列表与元组,接下来是字符串的操作,一点一点抠,这个过程真的要沉得住气,不然很容易被零碎的概念搞得崩溃。

 

字符串

前言:对于字符串里面的方法,——X——类似这一种有两个下划线的方法是面向于内部的,用不了。

name.capitalize()  首字母大写

name.center(50,"-")    输出 ---------------------Alex Li----------------------(打印50个字符,不够的用---补齐)

name.count('lex') 统计 lex出现次数
name.encode()  将字符串编码成bytes格式
name.endswith("Li")  判断字符串是否以 Li结尾
 "AlextLi".expandtabs(10) 输出'Alex      Li', 将t转换成多长的空格
 name.find('A')  查找A,找到返回其索引, 找不到返回-1

format :
    >>> msg = "my name is {}, and age is {}"
    >>> msg.format("alex",22)
    'my name is alex, and age is 22'
    >>> msg = "my name is {1}, and age is {0}"
    >>> msg.format("alex",22)
    'my name is 22, and age is alex'
    >>> msg = "my name is {name}, and age is {age}"
    >>> msg.format(age=22,name="ale")
    'my name is ale, and age is 22'
format_map
    >>> msg.format_map({'name':'alex','age':22})
    'my name is alex, and age is 22'

msg.index('a')  返回a所在字符串的索引
'9aA'.isalnum()   True

'9'.isdigit() 是否整数
name.isnumeric 
name.isprintable
name.isspace
name.istitle
name.isupper
 "|".join(['alex','jack','rain'])
'alex|jack|rain'

maketrans
    >>> intab = "aeiou"  #This is the string having actual characters.
    >>> outtab = "12345" #This is the string having corresponding mapping character
    >>> trantab = str.maketrans(intab, outtab)
    >>>
    >>> str = "this is string example....wow!!!"
    >>> str.translate(trantab)
    'th3s 3s str3ng 2x1mpl2....w4w!!!'

 msg.partition('is')   输出 ('my name ', 'is', ' {name}, and age is {age}')

 >>> "alex li, chinese name is lijie".replace("li","LI",1)
     'alex LI, chinese name is lijie'

 msg.swapcase 大小写互换

 >>> msg.zfill(40)
'00000my name is {name}, and age is {age}'

 

>>> n4.ljust(40,"-")
'Hello 2orld-----------------------------'
>>> n4.rjust(40,"-")
'-----------------------------Hello 2orld'

>>> b="ddefdsdff_哈哈"
>>> b.isidentifier() #检测一段字符串可否被当作标志符,即是否符合变量命名规则
True

 

字典操作

字典一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划、字母来查对应页的详细内容。

语法:

info = {

        'stu1101': "T1",

        'stu1102': "L2",

         'stu1103': "X3", }

print(info)

输出结果发现并没有按数字顺序,也没有按字母顺序排列。

print(info ["stu1101"])

输出的结果是T1

所以引出了

字典的特性:

  • dict是无序的
  • key必须是唯一的,so 天生去重

 

增加

info = {

        'stu1101': "T1",

        'stu1102': "L2",

         'stu1103': "X3", }

 

>>> info["stu1104"] = "C4"
>>> info {'stu1102': 'L2, 'stu1104': 'C2', 'stu1103': 'X3', 'stu1101': 'T1'}

 

修改

info = {

        'stu1101': "T1",

        'stu1102': "L2",

         'stu1103': "X3", }

info['stu1101'] = "t2"
>>> info

{'stu1102': '2', 'stu1103': 'X3', 'stu1101': 't2'}

 

删除

>>> info
{'stu1102': 'L2', 'stu1103': 'X3', 'stu1101': 'T1'}
>>> info.pop("stu1101") #标准删除姿势
此时删除的是T1
>>> info
{'stu1102': 'L2', 'stu1103': 'X3'}
>>> del info['stu1103'] #换个姿势删除
>>> info
{'stu1102': 'L2'}
>>>
>>>
>>>
>>> info = {'stu1102': 'L2', 'stu1103': 'X3'}
>>> info
{'stu1102': 'L2', 'stu1103': 'X3'} #随机删除
>>> info.popitem()
('stu1102', 'L2')
>>> info
{'stu1103': 'X3'}

 

查找

>>> info = {'stu1102': 'L2', 'stu1103': 'X3'}
>>>
>>> "stu1102" in info #标准用法
True
>>> info.get("stu1102")  #获取
'L2'
>>> info["stu1102"] #同上,但是看下面
'L2'
>>> info["stu1105"]  #如果一个key不存在,就报错,get不会,不存在只返回None
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'stu1105'

 

多级字典嵌套及操作

av_catalog = {
    "欧美":{
        "www.youporn.com": ["很多免费的,世界最大的","质量一般"],
        "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],
        "letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],
        "x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"]
    },
    "日韩":{
        "tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"]
    },
    "大陆":{
        "1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]
    }
}

av_catalog["大陆"]["1024"][1] += ",可以用爬虫爬下来"
print(av_catalog["大陆"]["1024"])
#ouput
['全部免费,真好,好人一生平安', '服务器在国外,慢,可以用爬虫爬下来']

 

更多内容

#values
>>> info.values()
dict_values(['L2', 'X3'])

#keys
>>> info.keys()
dict_keys(['stu1102', 'stu1103'])

#setdefault
>>> info.setdefault("stu1106","Alex")
'Alex'
>>> info
{'stu1102': 'L2', 'stu1103': 'X3', 'stu1106': 'Alex'}
>>> info.setdefault("stu1102","L2")
'L2'
>>> info
{'stu1102': 'L2', 'stu1103': 'X3', 'stu1106': 'Alex'}

#update
>>> info
{'stu1102': 'L2', 'stu1103': 'X3', 'stu1106': 'Alex'}
>>> b = {1:2,3:4, "stu1102":"L2"}
>>> info.update(b)
>>> info
{'stu1102': 'L2', 1: 2, 3: 4, 'stu1103': 'X3', 'stu1106': 'Alex'}

#items
info.items()
dict_items([('stu1102', 'L2'), (1, 2), (3, 4), ('stu1103', 'X3'), ('stu1106', 'Alex')])

#通过一个列表生成默认dict,有个没办法解释的坑,少用吧这个
>>> dict.fromkeys([1,2,3],'testd')
{1: 'testd', 2: 'testd', 3: 'testd'}

 

循环dict

#方法1
for key in info:
    print(key,info[key])

#方法2
for k,v in info.items(): #会先把dict转成list,数据里大时莫用
    print(k,v)

 

 

总结:在本阶段学习,小白的我感到了吃力,建议学习这部分的同学能够耐心总结,对学习有好处的。

列表与字典),python修行 学完了列表与元组,接下来是字符串的操作,一点一点抠,这个过程真的要沉得住气,不然很...

新手自学:pytion基础(第二周笔记),pytion第二周

一,模块初识

.标准库,不需要安装使用pytion最基础的内容

* .第三方库 必须下载安装*

.自己写模块或者文件名字不能和需要导入的库名相同
import sys  #sys 模块 
sys.path   
print(sys.path) #打印环境变量 提示sys.xxx
print(sys.argv) #打印绝对路径 :相对路径
print(sys.argv[2])
import os #用于和操作系统进行交互模块的os模块
os.system("dir") #dir查看当前路径
cmd_res=os.system("dir")#执行命令不保结果
cmd_res=os.popen("dir").read #read 把结果存到内存里的一个临时的地方
print("-->",cmd_res)
os.mkdir("new_dir") mkdir 创建目录用的

模块调用 自己写一个输入用户密码的py 然后在新的py里inport 这个模块即可使用

二,数据类型

 

数字
int(整形)
long(长整形)
.整数
.浮点数
float(浮点数)2.32和52.3e-4
complex(复数)(-5+4j)(2.3-4.6j)

 

布尔值
.真或假.1或0
.真Tune 假false
.字符串
."hello world"

.数据运算

  • 计算机中表示的最小单位,是一个二进制位*
  • 计算机中存储的最小单位,是一个二进制位*

 

8bit= byte(字节)
1024byte= 1kbyte
1024kbyte=1mbyte
1024mbyte=1gbyte
1024gbyte=1tbyte
三元运算
result=值1 if条件 else值2
如果条件为真:result=值1
如果条件为假:result=值2
a.b.c=1.3.5
d=a if a>b else c
d=5
d=a if a<b else c
d=1
.二进制,01
.八进制,01234567
.十进制,0123456789
.十六进制0123456789ABCDEF
H代表十六进制 如bh=11
0x也是
encode
decode 二进制转字符块
msg=("我爱爱北京天安门")
print(msg.encode(encoding="utf-8")) #转二进制
print(msg.encode(encoding="utf-8").decode(encoding="utf-8")) #转回
把一个字符块用encode转成二进制byte 再将用decode转回字符块.

三,列表 元祖的使用

 

列表,元组操作
names=["Alex","enle","good","hello","yello","school"] #列表
names2=("sui lin", "lin xin","zhi qiang")#元组 =只读列表 不具有修改,增加,删除等特性
#print(names[0])#Alex
#print(names[3])#hello
#print(names[1:3])#['enle', 'doog']切片<取两个数中间的值>
#print(names[-2])#yellow 
#print(names[-3:-1])#['hello', 'yello']切片
#print(names[:3])#['Alex', 'enle', 'good']前边或者后边不写即取最后<前>一个值
#names.reverse() #<将列表反着打印>
#names.sort() #按ASCll码排序
#names.append("glood")#增加用户在最后
#names.insert(1,"glood")#再指定位置增加用户,原来用户往后移动一位
#names[2]="king" #替换用户
#names.remove("good")#删除一个用户
#del names [2] #删除用户第二种方法
#names.pop(2)#pop删除最后一个输入位置则执行位置
#print(names.index("good")) 查到用户的位置
#print(names[names.index("good")])#查找并打印用户的账户
#print(names.count("good"))#统计用户姓名数量
#names.clear()#清空用户数据
#del names2[:]#删除names2的用户数
#names.extend(names2)#增加一个分组
print(names)

 

 

names.copy() 相当于复制一个列表
复制一份names2 等于name
把names里边的用户改一个成中文
names列表里再包含一个列表
只浅copy第一层 不copy修改的地方

 

调用copy模块 使name2=copy.copy(names)

  • 使name2=copy.deepcopy(names) #深copy print(names[0:-1:2])#跳着打印 print(names[::2]) #跳着打印*

做列表的for循环
for i in names:

  • print(i) 代码 *

names=["Alex","enle","good",["tich","alppe"],"hello","yello","school"]
names2=["sui lin", "lin xin","zhi qiang"]
names3 = copy.deepcopy(names)#深copy
names4= copy.copy(names)#浅copy的三种实现方式
names5= names[:] #切片实现浅copy
naes6= list(names)

 

#print(names[0:-1:2])
#print(names[::2])
names[2]="非常好"
names [3][1] = "flac"
print(names3)
print(names)
print(names3)

 

for i in names:

  • print(i)*

四,购物车程序代码

 

图片 1图片 2

 

 

#print(products_list.index(item),item)# index 索引 item 逐条列出
#break

 

#enumerate ()#把列表的下标排序直接找出来

 

#print(salary)

五, 字符串的常用操作

print(name.capitalize())#首字母大写
print(name.count("e")) #统计字母数量
print(name.center(50,"-")) #标题50个-号
print(name.encode())#把字符串转成二进制
print(name.endswith("le"))#判断尾数是否以""结尾
print(name.expandtabs(tabsize=50)) #把t转为空格
print(name[name.find("l"):])# 位置及切片
print(name.format(name="enle",age="22"))#改变{}里的变量
'''
print(name.isdigit()) #判断name是否为数字
print('asdf123'.isalnum())#判断这是不是一个阿拉伯数字
print('abA'.isalpha())#纯英文字符
print('1'.isdecimal())#忘记他
print('1'.isdigit())#判断是否为一个整数
print('a1A'.isidentifier())#判断是不是一个合法的标识符
print('a1a'.islower())#'判断是不是小写'
print('33'.isnumeric())#忘记他
print(' '.isspace())#判断是不是空格
print('My Name Is'.istitle()) #判断是不是大写开头
print('My Name Is'.istitle())#tty file drive file
print('M'.isupper())#判断是否全是大写
print('+'.join(['1','2','3','4'])) #转成字符串
print(name.ljust(50,'*'))#表示长50 不够用*号补上
print(name.rjust(50,'*'))#表示长50 不够用*号补上
print('Enle'.lower())#把大写变成小写
print('Enle'.upper())#把小写变成大写
print('nEnle'.lstrip())#去除左边n换行空格
print('Enlen'.rstrip())#去除右边n换行空格
print('nEnlen'.strip())#去除左右边n换行空格
p= str.maketrans("abcdefli",'123$%456')
print("alex li".translate(p)) # 古代的文本加密模式
print("alex li".replace('l','L',1))
print("alex lie".rfind('e'))#找到最后面值的下标
print("alex li".split('l'))#按照空格来分成列表或者符号
print("1+2n+3+4".splitlines())#自动识别不同系统换行
print("alEx li".swapcase()) #大小写互相转换
print("alex li ee".title())#把首字母换成
print("alex li".zfill(50))#不够的用0填充

六,字典的使用

#字典没有下标只有key

info = {
'stu1101': "TengLan Wu",
'stu1102': "LongZe Luola",
'stu1103': "XiaoZe Maliya",
} #字典
for i in info:
print(i,info[i]) #最简单的循环打印出字典所有东西 只有i只答应key值
for k,v in info.items():
print(k,v)
#区别是上面这种比下面哪种高效很多,第一种直接通过key取出数据

'''
b={
'stu1101':"alex",
1:3,
2:5,
}第二个字典

info.update(b)#有就修改没有及添加合并字典

#print(info)
c=dict.fromkeys([6,7,8],[1,{"name":"alex"},555])#初始化一个新的字典 为key附一个临时的值
print(c)
c[7][1]['name'] = "jace chen"
print(c)
#print(info.items()) #把字典转为列表

print(info)
print(info.get("stu1102")) #安全找出stu1102的值
print('stu1104' in info)# 判断是否有stu1104这个值.ifo.has_key pytion3里没有了

 

#print(info["stu1103"])
info["stu1101"]="武藤兰"#修改
info["stu1104"]=" cangjingkong"#添加
#info["stu1102"]="武藤兰"#修改
#del info["stu1104"]#删除第一种方法
#info.pop("stu1101")#删除第二种
#info.popitem()#随机删除

图片 3

av_catalog.setdefault("大陆",{"网址":[1,2]})
print(av_catalog)

#av_catalog.setdefault() 如果能找到字典里的值就用字典里的找不到就添加

#print(info)

七,三级菜单程序

以下为代码

图片 4图片 5图片 6

实现每一级都能退出 每一级都能返回上级菜单

八,作业

购物车的优化
用户入口
1.商品信息存在文件里
2.已购商品,余额记录.
商家入口

2.可以添加商品,修改商品价格

 

一,模块初识 库 . 标准库,不需要安装使用pytion最基础的内容 .第三方库 必须下载安装 .自己写...

本文由365bet体育备用网址器发布于应用,转载请注明出处:接下去是字符串的操作

关键词: