总目录:https://www.jianshu.com/p/e406a9bc93a9
Python - 子目录:https://www.jianshu.com/p/50b432cb9460
字符串
字符串是 Python 中最常用的数据类型。我们可以使用引号( ' 或 " )来创建字符串。
创建字符串很简单,只要为变量分配一个值即可。
var1=‘hello,world!’
var2=“I am hx”
同时有一个小技巧,如果字符串内自带单引号或者双引号,使用另一个符号反义便可,也可以使用\来转义。
var3=“I‘m hx”
var4=‘它是一个“乐天派”’
字符串特殊字符
\(在行尾时) 续行符
\\ 反斜杠符号
\' 单引号
\" 双引号
\a 响铃
\b 退格(Backspace)
\e 转义(3.7后的手册没有这个了)
\000 空
\n 换行
\v 纵向制表符
\t 横向制表符
\r 回车
\f 换页
\0yy 八进制数,yy代表的字符,例如:\012代表换行
\xyy 十六进制数,yy代表的字符,例如:\x0a代表换行
\other 其它的字符以普通格式输出
字符串运算符
实例变量a值为字符串 "Hello",b变量值为 "Python":
+:字符串连接
例子:a + b
输出结果: HelloPython
*:重复输出字符串
例子:a*2
输出结果:HelloHello
[]:通过索引获取字符串中字符
例子:a[1]
输出结果: e
[ : ]:截取字符串中的一部分,遵循左闭右开原则,str[0,2] 是不包含第 3 个字符的。
例子:a[1:4]
输出结果: ell
in:成员运算符 - 如果字符串中包含给定的字符返回
例子:True'H' in a
输出结果:True
not in:成员运算符 - 如果字符串中不包含给定的字符返回
例子:True'M' not in a
输出结果:True
r/R:原始字符串 -所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母 r(可以大小写)以外,与普通字符串有着几乎完全相同的语法。
例子:print(r'\n') print(R'\n')
输出结果:\n \n
运算符实例
a="Hello"
b="Python"
print("a + b 输出结果:",a+b)
a+b输出结果:HelloPython
print("a * 2 输出结果:",a*2)
a*2输出结果:HelloHello
print("a[1] 输出结果:",a[1])
a[1]输出结果:e
print("a[1:4] 输出结果:",a[1:4])
a[1:4]输出结果:ell
if("H"ina):
print("H 在变量 a 中")
else:
print("H 不在变量 a 中")
H在变量a中
if("M"notina):
print("M 不在变量 a 中")
else:
print("M 在变量 a 中")
M不在变量a中
print(r'\n')
\n
print(R'\n')
\n
字符串格式化
Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。
print("我叫 %s 今年 %d 岁!"%('小明',10))
我叫小明今年10岁!
print('''
name:%s,
age:%d
'''%("张三",20))
name:张三,
age:20
python字符串格式化符号:
%c 格式化字符及其ASCII码 例如:\x01
%s 格式化字符串 例如:"字符串"
%d 格式化整数 例如:10
%f 格式化浮点数字,可指定小数点后的精度 例如:10.10
%u 格式化无符号十进制整数
%o 格式化八进制数
%x 格式化十六进制数
%X 格式化十六进制数(大写)
%e 用科学计数法格式化浮点数
%E 作用同%e,用科学计数法格式化浮点数
%g %f和%e的简写
%G %f 和 %E 的简写
%p 用十六进制数格式化变量的地址(指针)(被废除)
3.8越来越不支持这样printf输出风格一样的字符串格式化。
而是改用format函数与 rjust()函数。
注:%d与%u都是十进制整数,区分在于有符号还是无符号,无符号类型可以存放的正数范围比有符号整型中的范围大一倍。因为Python全面采用有符号整型,所以%u已经过时了。
有符号能表示大小,也能表示正负,无符号只能表示大小。
格式化八进制与十六进制数,和 int(10,8)和int(10,16)一样。
#常用占位符
# %s %d %f %c
print("百分号s用来替换:%s"%("字符串"))
print("百分号d用来替换:%d"%(100))
print("百分号f用来替换:%f"%(10.10))
print("百分号c用来替换:%c"%(65))
百分号s用来替换:字符串
百分号d用来替换:100
百分号f用来替换:10.100000 #注意小数点后面有6位
百分号c用来替换:A
#进制占位符
#%u %o %x %X
print("百分号u用来替换:%u"%(10))
print("百分号o用来替换:%o"%(32))
print("百分号x用来替换:%x"%(10))
print("百分号X用来替换:%X"%(10))
#传入一个十进制数,转换为八进制或者16进制
百分号u用来替换:10
百分号o用来替换:40
百分号x用来替换:a
百分号X用来替换:A
#其他不常用的占位符
#%e %E %g %G
print("百分号e用来替换:%e"%(100000000000000000000000000000))
print("百分号E用来替换:%E"%(100000000000000000000000000000))
print("百分号g用来替换:%g"%(100000000000000000000000000000))
print("百分号G用来替换:%G"%(100000000000000000000000000000))
print("百分号g用来替换:%g"%(10.10))
print("百分号G用来替换:%G"%(10.10))
百分号e用来替换:1.000000e29
百分号E用来替换:1.000000E29
百分号g用来替换:1e29 #去掉小数点后的无效0
百分号G用来替换:1E29
百分号g用来替换:10.1 #使用g后,对他进行简写,就只有有效位了。
百分号G用来替换:10.1
格式化操作符辅助指令
m.n. m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)
- 用做左对齐
+ 在正数前面显示加号( + )
0 右对齐时,在前面填充0而不是空格
# 在八进制数前面显示('0o')
在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X')
% 当字符串中存在格式化标志时,需要用 %%表示一个百分号
常用的例子:
m.n.
print("%.2f"%(3.333))
输出:3.33
- +
第一个输出是对照组
print("%30.2f"%(45))
输出: 45.00
print("%-30.2f"%(45))
输出:45.00 输出左对齐,对照上一条 默认为右输出
print("%+30.2f"%(45))
输出: +45.00 这个会显示+号 ,如果是一个负数 就是-号。
0
print("%030.2f"%(45))
输出: 000000000000000000000000045.00
#不常用辅助符
# # %
print("%#o"%(10))
print("%#x"%(10))
print("%#X"%(10))
print('aaa %s %%'%('bbb'))
0o12
0xa
0XA
aaa bbb %
format方法
format方法分为:位置映射(匿名格式化),关键字映射(有名格式化),元素访问
print("{}:{}".format('192.168.0.100',8888))
192.168.0.100:8888
print("{server}{1}:{0}".format(8888,'192.168.1.100',server='Web Server Info :'))
Web Server Info :192.168.1.100:8888
print("{0[0]}.{0[1]}".format(('baidu','com')))
baidu.com
辅助格式化有:填充对齐,精度设置
print("{0}*{1}={2:0>2}".format(3,2,2*3))
3*2=06
print("{:.3f}".format(2.1415))
2.142
rjust()
print("123".rjust(4))
123
str.rjust(),他会生成一个指定大小的容器按照右对齐的方式存放一个字符串,你可以理解成创建了一个单元格来存放字符串。
String的内置方法
st='hello python '
st2='hello\tpython '
st3='hello python {name} is {age}'
统计元素个数
print(st.count('l'))
输出:2 st字符串中有 2 个l
居中 空格用#号代替
print(st.center(50,'#'))
输出: ##################hello python ###################
判断是否以某个内容开头
print(st.startswith('he'))
输出:True
查找到第一个元素,并将索引值返回 找不到返回-1
print(st.find('t'))
输出:8
格式化输出的另一种方式 待定:?:{}
print(st3.format(name='hx',age=20))
输出:hello python hx is 20
格式化输出的另一种方式 同上
print(st3.format_map({'name':'hx','age':21}))
输出: hello python hx is 21
检测字符串是否全小写
print('Abc'.islower())
输出: False
检测字符串是否全大写
print('ABC'.isupper())
输出:True
字符串中大写转换为小写
print('My tLtle'.lower())
输出:my tltle
字符串中小写转换成大写
print('My tLtle'.upper())
输出:MY TLTLE
去除字符串前后的特殊字符
print('\tMy tLtle\n'.strip())
输出: My tLtle
替换字符串中的指定内容
print('My title title'.replace('itle','lesson',1))
输出:My tlesson title
以指定字符为分割符,将字符串分割成列表,1代表只在第一个字符处分割
print('My title title'.split('i',1))
输出:['My t', 'tle title']
---------------------------------------以上为常用函数------------------------------------------
首字母大写
print(st.capitalize())
输出:Hello python
判断是否以某个内容结尾
print(st.endswith('tty3'))
输出:False
\t处代表多少空格
print(st2.expandtabs(tabsize=20))
输出:hello python
查找到第一个元素,并将索引值返回 找不到报错
print(st.index('t'))
输出:8 因为他会报错,所以不适用他
只能是字符或者数字,或者两者的结合,不可以有特殊字符
print('asd'.isalnum())
输出:True
判断是否为十进制
print('12632178'.isdecimal())
输出:True
检测字符串是否只由数字组成
print('1269999.uuuu'.isnumeric())
输出:False
检测是否合法变量 True为合法 False为非法
print('abc'. isidentifier() )
输出:True
检测字符串是否全是空格
print(' e'.isspace())
print(' '.isspace())
输出:False
True 第二个全是空格 输出True
检测字符串中单词是否开头大写
print('My title'.istitle())
输出:False
字符串中大小写转换
print('My tLtle'.swapcase())
输出:mY TlTLE 大写变成小写,小写变成大写
生成一个以指定字符串开头的指定长度的字符串,缺少部分用‘*’在后补充
print('My tLtle'.ljust(50,'*'))
输出:My tLtle******************************************
生成一个以指定字符串开头的指定长度的字符串,缺少部分用‘*’在前补充
print('My tLtle'.rjust(50,'*'))
输出:******************************************My tLtle
去除字符串前的特殊字符
print('\tMy tLtle\n'.lstrip())
输出: My tLtle
# 这里是后面的换行符产生的空行
去除字符串后的特殊字符
print('\tMy tLtle\n'.rstrip())
输出: My tLtle
查找到最后一个元素,并将索引值返回 找不到返回-1
print('My title title'.rfind('t'))
输出:11
以首单词格式修改后面单词的格式
print('My title title'.title())
输出:My Title Title my是首单词 他是开头大写 所以之后也是开头大写