标签:字符集 backspace LLC 存储 字符串的操作 科学计数法 切片 %s case
每种编程语言都有自己的数据类型,用于标识计算机可以认识的数据,Python中主要的数据类型为字符串,整数,浮点数,列表,元祖,字典,集合七种主要的数据类型,其中以列表,字典为最主要的数据类型。
在说数据类型之前,首先说一下变量,那什么是变量?简单讲,变量就是一个容器,用来装东西的,可以装不同的东西。如一个瓶子,可以拿去装酱油,也可以拿去装可乐;其中瓶子就是一个变量,我们可以给瓶子起个名字,就是变量名,而瓶子中装的酱油和可乐就是不同的数据类型。
名称错误通常意味着两种情况:
下面将Python中主要的数据类型分数字,字符串,列表,元祖,字典,集合六种类型进行总结。
Python的数字也有4中不同的类型,分别是:整数(int)、浮点数(float)、布尔值(bool)、复数(complex)。
Python将带小数点的数字都称为浮点数。
简单理解,整数就是没有小数点的数!例如0,-1,23333333,整数的准确概念可参考该内容
Python中的整数又有不同的进制,如十进制,二进制,十六进制,八进制。
现在不懂进制没关系,想了解的话可以百度,我就不长篇大论了。
他们之间的相互转化可以参考该内容
print(0b100110) # 二进制
# 结果:38
print(0o7654321) # 八进制
# 结果:2054353</pre>
print(0xA20974BCF) # 十六进制
# 结果:43496459215
print(0xABCD) # 十六进制
# 结果:43981
简单点说,浮点数就是带小数点的数字。
划重点:浮点数只能以十进制方式书写,也就是不加前缀。
整数型和浮点型都是数字,区别在于:
布尔值就是我们常说的逻辑值,可以理解为对或者错,正面与反面。
复数是什么?
有理数和无理数统称实数,在实数之外还有一种叫复数,一般用不到,了解一下就可以了。
在Python中,复数是这样表示的:
print(1+1j)
# 结果:(1+1j)
print(type(1+1j))
# 结果:complex
type(10)
# 结果:int
type(10.3)
# 结果:float
print(type(‘10.3‘))
# 结果:str
print(isinstance(2,int))
# 结果:True
print(isinstance(2.0,int))
# 结果:False
在Python中,用引号包起的都被称为字符串,其中引号可以是单引号(‘’),也可以是双引号(“”)和三引号(‘‘‘ ‘‘‘ 或""" """)
name = ‘zhang san‘
str = ‘good morning!‘
print(str,name)
# 结果:goodmorning! zhang san
在很多时候,我们需要在字符串中放置变量,然后用变量的值替换,python中字符串的格式化输出有两种方式:
具体使用方法如下:
name = ‘zhang san‘
age = 22
job = ‘student‘
str = "my name is %s,I‘m %d years old,I‘m a %s." %(name,age,job)
print(str)
# 结果:my name is zhang san,I‘m 22 years old,I‘m a student.
其中%s代表字符串变量,%d代表整数型变量。
常见的格式化字符:
格式 | 描述 |
---|---|
%% | 百分号标记 ,就是输出一个% |
%c | 字符及其ASCII码 |
%s | 字符串 |
%d | 有符号整数(十进制) |
%u | 无符号整数(十进制) |
%o | 无符号整数(八进制) |
%x | 无符号整数(十六进制) |
%X | 无符号整数(十六进制大写字符) |
%e | 浮点数字(科学计数法) |
%E | 浮点数字(科学计数法,用E代替e) |
%f | 浮点数字(用小数点符号) |
%g | 浮点数字(根据值的大小采用%e或%f) |
%G | 浮点数字(类似于%g) |
%p | 指针(用十六进制打印值的内存地址) |
%n | 存储输出字符的数量放进参数列表的下一个变量中 |
其中,最常用的为%s,%d,%f,%e。
name = ‘zhang san‘
age = 22
job = ‘student‘
# 方式一:
str = "my name is {name},I‘m {age} years old,I‘m a {job}." .format(name=name, age = age, job = job)
print(str)
# 结果: my name is zhang san,I‘m 22 years old,I‘m a zhang san.</pre>
# 方式二:
str = "my name is {0},I‘m {1} years old,I‘m a {2}." .format(name, age, job)
print(str)
# 结果: my name is zhang san,I‘m 22 years old,I‘m a zhang san.
其他用法:
age = 25
name = ‘Caroline‘
print(‘{0:.3} is a decimal. ‘.format(1/3)) # 小数点后三位
# 结果:0.333 is a decimal.
print(‘{0:_^11} is a 11 length. ‘.format(name)) # 使用_补齐空位
# 结果:_Caroline__ is a 11 length.
print(‘My name is {0.name}‘.format(open(‘out.txt‘, ‘w‘))) # 调用方法
# 结果:My name is out.txt
print(‘My name is {0:8}.‘.format(‘Fred‘)) # 指定宽度
# 结果:My name is Fred
转义转义,顾名思义,就是转换含义,通俗的说就是改变原来的意思
Python用反斜杠()来转义字符
转义字符 | 描述 |
---|---|
(在行尾时) | 续行符 |
\ | 反斜杠符号 |
‘ | 单引号 |
" | 双引号 |
\a | 响铃 |
\b | 退格(Backspace) |
\e | 转义 |
\000 | 空 |
\n | 换行 |
\v | 纵向制表符 |
\t | 横向制表符 |
\r | 回车 |
\f | 换页 |
\oyy | 八进制数,yy代表的字符,例如:\o12代表换行 |
\xyy | 十六进制数,yy代表的字符,例如:\x0a代表换行 |
\other | 其它的字符以普通格式输出 |
对字符串的操作,常用的操作主要包括查看字符串长度,索引和切片,分割和拼接字符串,字符串格式的判断和修改,字符串填充,字符串子串的查找和替换等操作
用len()函数查看字符串的长度
a = ‘zhang san‘
print(len(a))
# 结果:9
b = "你好"
print(len(b))
# 结果:2
由上面两个例子可以看出,len()函数查看的是字符串中字符的数量,其还可以查看列表,元祖,字典中的长度,下面会提到。
单个字符串的提取用索引,多个字符串的提取用切片
字符串的索引:
Python有两种索引方式:
name = ‘zhangsan‘
print(name[0])
# 结果:‘z‘
name = ‘zhangsan‘
print(name[-3])
# 结果: ‘s‘
字符串的切片:
切片:顾名思义,就是把东西切成片,如果把字符串看成一根黄瓜,切片就是切出一个黄瓜片,黄瓜片的厚度就代表了切出来的字符串的长度。
我们来想一下,如果要从一根黄瓜里面切出一个黄瓜片,一般是要切两刀,在黄瓜的某个位置切一刀,然后根据所需黄瓜片的厚度,在另外的一个位置再切一刀,黄瓜片就产生了。当然,如果我们从头开始切,那第一刀就不用切了,只要根据想要黄瓜片的厚度在相应位置切一刀就可以产生一个黄瓜片,同理,我们想要黄瓜的结尾部分,只要切一刀就可以了,后面的部分也是一个黄瓜片。所以,切片的语法就类似我们切黄瓜片,需要三个参数,开始的位置,结束的位置,每刀切多厚。
切片标准的写法是用两个冒号分割三个数字,代表的意思分别是:
name = ‘zhang san‘
print(name[1:4] ) # 从第2个位置切到第4个位置
# 结果:‘han‘
print(name[1:4:2]) # 从第2个位置切到第4个位置,步长为2
# 结果:‘hn‘
print(name[1:]) # 从第2个位置切到最后
# 结果:‘hang san‘
print(name[::]) # 切出所有
# 结果:‘zhang san‘
print(name[::2] ) # 切出所有,步长为2
# 结果: ‘zagsn‘
print(name[::-1]) # 逆序字符串
# 结果: ‘nas gnahz‘
print(name[:5]) # 切出前5个字符
# 结果:‘zhang‘
1)、根据指定的分隔符将字符串分割为前,中,后三部分
一般为指定的分隔符前面为1部分,分隔符为一部分,剩下的为一部分 ,返回一个含有三个元素的元祖
partition(self, sep)方法从左面开始
rpartition(self, sep)方法从右面开始
name = ‘zhangsan,lisi,wangwu,maliu‘
name.partition("a")
# 结果: (‘zh‘, ‘a‘, ‘ngsan,lisi,wangwu,maliu‘)
2)、根据指定的分割符分割,默认分隔符为空格
指定分隔符和最多分割几次,默认不限次数,返回的是列表
split(self, sep=None, maxsplit=None): 分割,从左侧开始,返回的是列表
rsplit(self, sep=None, maxsplit=None): 分割,从右侧开始,返回的是列表
splitlines(self, keepends=False):根据换行符进行分割,返回列表
name = """zhangsan,lisi,wangwu"""
print(name.split(sep = ‘a‘,maxsplit=1))
# 结果:[‘zh‘, ‘ngsan,lisi,wangwu‘]
name = """zhangsan,lisi,wangwu"""
print(name.rsplit(sep = ‘a‘,maxsplit=1))
# 结果:[‘zhangsan,lisi,w‘, ‘ngwu‘]
name = """zhangsan
lisi
wangwu
"""
print(name.splitlines())
# 结果: [‘zhangsan ‘, ‘lisi ‘, ‘wangwu‘]
1)、两个字符串拼接可以使用加号(+)来实现,如果想要将列表中的字符串全部拼接起来,可以使用join()方法。
‘my‘ +‘ ‘+ ‘name‘ + ‘ ‘+ ‘is‘ + ‘ ‘ + ‘zhangsan‘
# 结果: ‘my name is zhangsan‘
2)、join(self, iterable): 使用指定的连接符,将传入的列表中的各元素连接在一起
s = ‘,‘
a = s.join([‘lisi‘,‘wangwu‘,‘maliu‘])
print(a)
# 结果: ‘lisi,wangwu,maliu‘
join方法和split方法是相反的操作:
name = [‘lisi‘, ‘wangwu‘, ‘maliu‘]
s = ‘,‘
a = s.join([‘lisi‘, ‘wangwu‘, ‘maliu‘])
print(a)
# 结果:lisi,wangwu,maliu
b = a.split(s)
print(b)
# 结果:[‘lisi‘, ‘wangwu‘, ‘maliu‘]
1)、判断字符串是否为某种格式:
2)、使用方法修改字符串的格式:
name = ‘zhang san‘
job = ‘IT‘
print(name.title())
# 结果:Zhang San
print(name.upper())
# 结果:ZHANG SAN
print(job.lower())
# 结果:it
print(name.capitalize())
# 结果:Zhang san
print(name.title().swapcase())
# 结果:zHANG sAN
1)、使用制表符或换行符来添加空白
print(‘hello,zhang san‘)
# 结果:hello,zhang san
print(‘hello,\nzhang san‘)
# 结果:hello,
# zhang san
print(‘hello,\tzhang san‘)
# 结果:hello, zhang san
2)、 删除空白
name = ‘ zhang san ‘
print(‘|‘ + name+‘|‘,len(name))
# 结果: | zhang san | 17
print(‘|‘ + name.rstrip()+‘|‘,len(name.rstrip()))
# 结果: | zhang san| 13
print(‘|‘ + name.lstrip()+‘|‘,len(name.lstrip()))
# 结果:|zhang san | 13
print(‘|‘ + name.strip()+‘|‘,len(name.strip()))
# 结果:|zhang san| 9
3)、将字符串填充为指定的长度
name = ‘zhangsan‘
print(name.center(50,‘-‘))
# 结果:---------------------zhangsan---------------------
print(name.ljust(50,‘*‘))
# 结果:zhangsan******************************************
print(name.rjust(50,‘*‘))
# 结果:******************************************zhangsan
print(name.zfill(20))
# 结果:000000000000zhangsan
1)、计算字符串中子串的个数
count(self, sub, start=None, end=None) 用于统计字符串中某个子串的个数,start为开始查找位置,end为结束查找位置,但不包括该位置。
name = ‘zhangsan‘
print(name.count(‘a‘)) # 找’zhangsan‘这个字符串中有几个‘a’
# 结果: 2
name = ‘zhangsan‘
print(name.count(‘a‘,3)) # 从’zhangsan‘这个字符串的第三个位置即n开始找字符串中有几个‘a’
# 结果:1
name = ‘zhangsan‘
print(name.count(‘a‘,3,6)) # 从’zhangsan‘这个字符串的第三个位置(即n)开始,第6个位置(即a)结束(不包含)找字符串中有几个‘a’
# 结果:0
2)、寻找字符串中子串的位置
用于寻找字符串中的子串的索引位置,如果有多个以第一个找到为准。结果从0开始,如果没找到返回-1
find(self, sub, start=None, end=None): 从左侧开始找
rfind(self, sub, start=None, end=None): 从右侧开始找
name = ‘zhangsan‘
name.find(‘a‘)
# 结果: 2
name = ‘zhangsan‘
name.find(‘saw‘)
# 结果“: -1
name= ‘zhangsan‘
name.rfind(‘a‘)
# 结果: 6
用于寻找字符串中的子串的索引位置,如果有多个以第一个找到为准。结果从0开始,如果没找到报错
index(self, sub, start=None, end=None): 从左侧开始找
rindex(self, sub, start=None, end=None): 从右侧开始找
name= ‘zhang san‘
name.index(‘an‘)
# 结果:2
name= ‘zhang san‘
name.rindex(‘an‘)
# 结果:7
3)、替换字符串中子串的内容
replace(self, old, new, count=None): 将字符串中的子串替换为另外的子串
name= ‘zhang san‘
name.replace(‘a‘,‘e‘)
# 结果: ‘zheng sen‘
4)、将tab转换成空格,默认一个tab转换成8个空格
expandtabs(self, tabsize=None):
name = ‘zhang\tsan‘
names = name.expandtabs()
print(names)
# 结果: ‘zhang san‘
在python中,字符编码普遍认为是个很麻烦的事情,只要记住unicode是万国码,其他任何其他编码形式想要相互转换编码格式,都需要先解码成unicode,然后再编码成想要转换的编码格式。
将字符串解码为unicode格式
decode(self, encoding=None, errors=None):
将unicode格式的字符串编码为指定的编码格式
encode(self, encoding=None, errors=None):
其他方法:
translate(self, table, deletechars=None) 转换
需要先做一个对应表,最后一个表示删除字符集合
intab = "aeiou"
outtab = "12345"
trantab = str.maketrans(intab, outtab)
str = "this is string example....wow!!!"
print (str.translate(trantab))
# 结果: th3s 3s str3ng 2x1mpl2....w4w!!!
python学习之路-基本数据类型1 变量的概念、数字、字符串
标签:字符集 backspace LLC 存储 字符串的操作 科学计数法 切片 %s case
原文地址:https://www.cnblogs.com/idiots/p/10025848.html