上一节我讲到了python的数学运算,这一节我们来了解了解python的字符串。
作为社团的python领导人,总有些玩了python两三天的学弟还问我"字符串是什么?"
下面的东西就是字符串
'hello world!' #这就是字符串
"hello world!" #这也是字符串
'123' #这还是字符串
'124+asd;z,].x,./cas' #这种东西也是字符串
'' #就连这个都是字符串
好了,言归正传(- _ -)
字符串的官方解释
字符串或串(String)是由数字、字母、下划线组成的一串字符。一般记为 s=“a1a2···an”(n>=0)。它是编程语言中表示文本的数据类型。在程序设计中,字符串(string)为符号或数值的一个连续序列,如符号串(一串字符)或二进制数字串(一串二进制数字)。
简单来说 单引号' ' 或 双引号" " 包括起来的东西就是字符串(包括引号本身)
我们可以将字符串赋值给一个变量,例
a = 'hello world!'
b = "hello world!"
接下来有两种显示的方式
(1)直接打a或b,然后按回车,下面是输出结果
'hello world!' #a的输出结果
"hello world!" #b的输出结果
(2)通过print()来打印a或b,下面是输出结果
hello world! #print(a)的结果
hello world! #print(b)的结果
可以看到使用print()打印出来的字符串少了引号,这是因为直接输入a或b,反应的是a或b的具体赋值内容(因为是字符串,所以文字边要带有引号),使用print()是反应了变量所被赋值的字符串的文字内容,所以只输出了里面的文字内容
字符串的特殊运算方式
不要惊讶,字符串可以进行数学运算!我直接上例子:
print('hello'+'world'+'!')
print('hello'*2)
下面是输出结果:
helloworld! #print('hello'+'world'+'!')的结果
hellohello #print('hello'*2)的结果
!!但是!!==>字符串有不可以这样操作!
'hello'*'hello' #错的
'hello'**2 #错的
'hello'+123 #错的
'hellow'-'w' #错的
'hellohello'/2 #错的
如果将一段字符串视为一个苹果,苹果*2 = 两个苹果,苹果*苹果 = ?
所以大家只要记得字符串之间可以进行加法运算,可以使一个字符串乘以一个数,
然后在加法运算的时候字符串不能加上数字(下面我特地演示一下)
'hello'+'2' #可以
'hello'+2 #不可以
'2'是字符串,2是数字,字符串和数字之间是不能进行加法运算的,但能进行乘法运算!!
!!!最重要的是这里的'',""是英文键盘下的引号,不是中文键盘下的‘’,“”,应该说所有的中文符号在python中不支持!!!
字符串中的特殊符号
'\' #反斜杠——转义字符 '\n' #换行字符标志 '\r' #回车 '\t' #水平制表(HT) (跳到下一个TAB位置)
'\0' #空格
下面给出代码示例
反斜杠的使用
print('i don't like you')
你看到了里面有三个单引号,但是每两个引号之间构成一段字符串(从左到右),也就是说在'i don'后面的东西就不是字符串了,读者可以吧上面的代码赋值到交互编辑内按回车,你会发现python会给你报错,那么我们在第二个单引号前面添加\(反斜杠)会解决这个问题
print('i don\'t like you')
有时还会有这样的代码
print('this is \')
要是想让反斜杠也作为普通的字符串的话可以这样
print('this is \\string') #这里使用前面的反斜杠把后面的反斜杠给普通意义化了
print(r'this is \string') #直接在整段字符串前加r,让字符串内的所有特殊字符普通意义化
其他特殊字符的使用
\n的使用
print('hello\nworld!')
结果
hello
world
\r的使用
print('hello\rworld')
结果(因为相当于你在打了hello之后按了一个回车)
world
\t的使用
print('\thello!')
结果(相当于你在hello前按了个TAB)
hello
\0的使用
print('hello\0world!')
结果
hello world!
字符串的编码问题
所有的字符都有编码,在python的文件中通常使用的是UTF-8,编码错误的话会导致出现一些火星语让你看不懂
具体的情况我会分到一个特殊的节选来讲
字符串的切片
有学弟问我字符串的切片是什么?
简单来讲就像是切分寿司,下面我将把字符串(寿司)切成三份
<我是长条寿司>==>'oasjdoasjdsoasdsassncczxhzsad'
<我是短条寿司>==>'oasjdoasjd','soasdsass','ncczxhzsad'
这就是字符串的切片,但是python中的切片通常是这样执行的
"我是字符串"[3] ==> "符","我是字符串"[0:2] ==> "我是"
通式就是"xxxxx"[x,y] #提取该字符串的第x个位置到第y-1个位置的字符(即[x,y),左闭右开)
!!!有一个很重要的细节是字符串中的第一个字符的位置是0号!!!
!!!还有一个细节是特殊字符如(\n)不是两个字符,\n等特殊字符算作一个字符!!!
也就是说"你好啊","你"的位置是该字符串的第0号位置,然后依次后退,下面展示代码
print('我喜欢使用python'[4])
print("我喜欢使用python"[0:4])
print("我喜欢使用python"[4:])
print("我喜欢使用python"[-1])
print("我喜欢使用python"[-3:-1])
print("这里有特殊字符\n哦"[7])
下面是上面依次的结果
用 #print('我喜欢使用python'[4])的结果
我喜欢使用 #print("我喜欢使用python"[0:4])的结果
用python #print("我喜欢使用python"[4:])的结果
n #print("我喜欢使用python"[-1])的结果
ho #print("我喜欢使用python"[-3:-1])的结果
#这是一个换了行的空行
#print("这里有特殊字符\n哦"[7])的结果
字符串的特殊使用方式
#以下的x代指字符串
x.capitalize()#将字符串第一个字母大写
x.center(y)#将原始字符串居中,返回一个共y个字符的字符串(其他的地方使用空格填充)
x.count(m,n=0,z=len(x))#返回原始字符串中m出现的次数,x为字符串,n是检索的字符串的起始位置,z是结束位置(n,z可以不写,就默认为全部)
x.encode(y)#以指定形式编码,y可以是utf-8或ANSI
x.decode(y)#以指定形式编码,y可以是utf-8或ANSI
x.find(y)#返回第一个y在str中的位置,如果没有则返回-1,x是字符串
x.format()#格式化字符串
x.index(y)#返回第一个y在str中的位置,如果没有则报错,x是字符串
x.isalnum()#如果str内至少有一个字符,且这些字符是字母或者是数字的话就返回True,否则False
x.isalpha()#如果str至少有一个字符并且所有字符都是字母则返回 True,否则返回 False
x.isdecimal()#如果str只包含十进制数字则返回 True 否则返回 False.
x.isdigit()#如果str只包含数字则返回 True 否则返回 False.
讲的差不多了,感觉讲了好多
但是听的多远远不及练的多好,作为程序员要有一个长练手的心才能强大起来!
下一节我将会讲python的条件判断,条件判断符号,条件判断的示例代码,希望你们能有所收获哦!