Python之路,第四篇:Python入门与基础4
Python3 字符串
字符串是一个有序的字符序列
如何表示一个字符串:
在非注释中凡是用引号括起来的部分都是字符串;
‘ 单引号 ” 双引号 ‘’‘ 三单引号 “”“ 三双引号
非空字符串中的表示方法:
‘hello’ 、 “hello” 、 “”“hello”“” 、 ‘’‘hello’‘’
单引号和双引号三引号的区别:
单引号内的双引号不算结束符;
双引号内的单引号不算结束符;
三引号字符串,也叫所见即所得字符串,
字符串中可以包含换行符、制表符以及其他特殊字符; 字符串的换行直接被记录在字符串内部;
>>> "I'm a tree." "I'm a tree." >>> 'I am a "tree".' 'I am a "tree".' >>>
>>> x = 'hello\nworld!' >>> y = """hello world!""" >>> if x == y: print("两个字符串相同!") 两个字符串相同! >>> print(x) hello world! >>> print(y) hello world! >>>
空字符串的表示方法:
‘ ’ 、 “ ” 、 ''' ''' 、 “”“ ”“”
空字符串的布尔值(bool)为False。
>>> x = '' >>> bool(x) False >>> x = ' ' >>> bool(x) True >>>
换行符(\n ):
print("hello\nworld!")
隐式字符串拼接:
x = “aaaaaaaaaaaa”
“aaaaaaaaaaaa”
“aaaaaaaaaaaa”
s = “I'm” ' a tree' 'name:"yangshu" '
用转义序列代表特殊字符;字符串常量中用字符反斜杠 \ ; 后跟一些字符代表特定含义的字符;
\' 单引号 、 \" 双引号 、 \n 换行符
转义字符 描述 \(在行尾时) 续行符 \\ 反斜杠符号 \' 单引号 \" 双引号 \a 响铃 \b 退格(Backspace) \e 转义 \000 空 \n 换行 \v 纵向制表符 \t 横向制表符 \r 回车 \f 换页 \oyy 八进制数,yy代表的字符,例如:\o12代表换行 \xyy 十六进制数,yy代表的字符,例如:\x0a代表换行 \uXXX Unicode16位的十六进制表示
\uXXXXXXXX Unicode32位的十六进制表示
ASCII 字符表
#man ascii <回车>待补充
中文 “\u4e2d\u6587”
Unicode
UTF-8 (unicode transfrom font)
常用的ASCII编码:
字符 十进制 十六进制
‘0’ 48 0x30
'A' 65 0x41
'a' 97 0x61
raw 字符串(原始字符串)
格式: r‘C:\Windows\System32’
'C:\\Windows\\System32'
作用: 将字符串内的反斜杠不做为转义字符。
序列相关的字符串函数:
len(x)函数用于获取字符串序列的长度(长度指字节数);
max(seq) 函数用于获取一个字符串的最大值的字符;
min(seq) 函数用于获取一个字符串的最小值的字符;
>>> >>> len("ASDF") 4 >>> max("Aa1Bb2") 'b' >>> min("Aa1Bb2") '1' >>>
字符串代码转换函数:
ord(str) 返回一个字符的ASCII的值;
chr(i) 返回i这个值所对应的字符;
数字转换为字符串函数:
hex(i) 将整数转换为十六进制字符串
oct(i) 将整数转换为八进制字符串
bin(i) 将整数转换为二进制字符串
注:int(‘1234’, 10)#1234 转换为十进制
将字符串转换为整数:
int(x, base=0) 将字符串转换为整数
float
bool
complex
将对象转换为字符串类型str函数
str(x) x可以是任意对象
为什么要字符串转换?
“123” + 4
123 + 4 #127 整数 、 “123” + str(4) # 1234 新的字符串
字符串的运算:
+ += * *=
+ 加号运算符用于拼接字符串
+= 运算符用源字符串与右边字符串拼接生成新的字符串
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
>>> 'abc' + '123' 'abc123' >>> '123' + 'abc' '123abc' >>>
>>> a = "ABC" >>> b = "DEF" >>> c = a + b >>> print(c) ABCDEF >>> a 'ABC' >>> a += b >>> a 'ABCDEF' >>>
* 运算符生成重复字符串
*= 运算符生成重复字符串并改变变量的绑定; (*=右侧的对象只能是整数)
>>> b 'DEF' >>> b * 3 'DEFDEFDEF' >>>
>>> x = "123"
>>> x *= 4
>>> print(x)
123123123123
>>>
in 、 not in 运算符
作用:in/not 用于序列,字典,集合中,用于判断某个值是否存在于对象中, 存在返回TRUE,不存在返回FALSE;
not in 与in 返回值相反;
>>> s = "My name is 'xiaoming'" >>> if 'is' in s: print("is在字符串s中") else: print("is不在字符串s中") >>>
字符串比较:
> >= < <= == !=
>>> "ABC" > "ABB" True >>> "ADC" < "ABC" False >>> "ABC" >= "123" True >>> "AD" >= "ABC" True >>> "AB" < "ABC" True >>> "ABC" == "abc" False >>>
python 运算符优先级(自上而下,由高到低):
** 指数
~ , + , - 按位反转, 一元正号, 一元负号
* , / , // , % 乘。。。
+ , - 加法减法
>> << 右移左移
& 位于
^ 异位或
| 位或
< , <= ,> ,>=, ==, != , is , is not , in , not in 比较等。。
not
and
or
if else 条件表达式
索引 index
python字符串是不可以改变的“字符”序列。
语法:字符串{【整数值】
说明: 序列都可以用索引(index)来访问序列的对象。
序列正向的索引是从0开始的, 第二个索引为1 ......最后一个为 len(s)-1
序列的反向 索引是从-1开始的, -2 代表倒数第二个....., 最后一个是 -len(s)
#!/usr/bin/python s = input("请输入一个字符串:") print("第一个字符", s[0],"和",s[-len(s)]) print("中间字符串:",s[len(s)//2]) print("最后一个字符:",s[-1],"和",s[len(s)-1]) >>> ================================ RESTART ================================ >>> 请输入一个字符串:abcdefgh 第一个字符 a 和 a 中间字符串: e 最后一个字符: h 和 h >>>
切片 slice (分片)
用于字符串中,从字符串序列中取出相应的元素,重新组成一个新的字符串序列。
语法: 字符串【(开始索引b): (结束索引e) :(步长s)】 ;注:小括号括起来的部分代表可以省略;
>>> s = "abcdefgh" >>> >>> s[:] 'abcdefgh' >>> s[2:4] 'cd' >>> s[2:3] 'c' >>> s[2:2] '' >>> s[2:0] '' >>> s[2:] 'cdefgh' >>> s[:2] 'ab' >>>
>>> s[0:6:2]
'ace'
>>> s[0:100:2]
'aceg'
>>> s[::2]
'aceg'
>>> s[::3]
'adg'
\
>>> s[::4]
'ae'
>>> s[::5]
'af'
>>> s[::100]
'a'
>>>
字符串的方法(method)
字符串属性的方法: 对象.属性
s.lower() 生成将英文转化为小写的字符串;
s.upper() 生成将英文转化为大写的字符串;
s.title() 生成将因为单词首字母大写的字符串;
s.isdigit() 判断字符串是否为数字
s.isalpha() 判断字符串是否为英文字符
s.islower() 判断字符串是否都为小写字符串
s.isupper() 判断字符串是否都为大写字符串
s.strip() 返回去掉左右空白字符串的字符串;
s.lstrip() 返回去掉左空白字符串的字符串;
s.rstrip() 返回去掉右空白字符串的字符串;
s.count(sub, [, start [,end]]) 返回一个字符串子串的个数;
s.find(sub [, start [, end]]) 返回一个字符串sub的索引,失败返回-1 ;
s.replace(old, new [, count]) 用新字符串替换旧字符串 ;
>>> '123'.isalpha() False >>> "ABC".isalpha() True >>> "AB C".isalpha() False >>> "ABC".strip() 'ABC' >>> " ABC \n".strip() 'ABC' >>> " ABC \n".rstrip() ' ABC' >>> "AB AC ABC".find("AB") 0 >>> "AB AC ABC".find("AB", 1) 6 >>> "AB AC ABC".find("AB", 0) 0 >>> >>> "AB AC ABC".find("A", 4) 6 >>> "AB AC ABC".find("A", 4, 7) 6 >>> "AB AC ABC".find("A", 4, 6) -1 >>> "AB AC ABC".replace("AB", "") ' AC C'>>> "AB AC ABC".replace("AB", "++++++") '++++++ AC ++++++C' >>>
用help 查找str 这个类型的帮助;
help(str)
help("__main__")
字符串的格式化表达式:
运算符 %
作用: 生成一定格式的字符串;
语法: 格式化字符串 % 参数值 ; 或者 格式化字符串 % (参数值1,参数值2.。。。)
格式化字符串中的占位符:
%s 字符串
%r 字符串,使用repr(而不是str)
%c 整数转单个字符
%d 十进制整数
%o 八进制整数
%x 十六进制整数(字符a-f 小写)
%X 十六进制整数 (字符A-F大写)
%e 指数型浮点数,如2.9e + 8
%E 指数型浮点数,如2.9E + 8
%f,%F 浮点十进制形式
%% 等同于一个%
>>> name = 'xiaoming' >>> age = 23 >>> "name: %s, age: %d" % (name, age) 'name: xiaoming, age: 23' >>> "%(name)s今年%(age)d岁." % {'age':23, 'name':'xiaoming'} #基于字典的格式化 'xiaoming今年23岁.' >>>
占位符和类型码之间的格式语法:
- 号 左对齐、 + 右对齐 、 0 补零 、 width 宽度 、 pricision 精度;
>>> "%10d" % 123 ' 123' >>> "%-10d" % 123 '123 ' >>> "%10d" % -123 ' -123' >>> "%-10d" % -123 '-123 ' >>> "%0d" % 123 '123' >>> "%010d" % 123 '0000000123' >>> "%10s" % "abc" ' abc' >>> "%7.2f" % 1.2345678 #宽度7, 保留小数点2位 ' 1.23' >>>