python字符串之基本操作小练习
Python数据类型之String字符串实例详解本文实例讲述了python数据类型之string字符串。分享给大家供大家参考,具体如下:
string(字符串)
1、概述
字符串是以单引号或双引号括起来的任意文本,比如"abc",‘xy'等等,请注意‘'或者""本身只是一种表示方式,并不是字符串的一部分。
a.若字符串内部包含单引号又包含双引号怎么办?
|
print ( 'i\'m \"ok\"' ) |
表示的字符串内容是:
i'm "ok"
注意:转义字符\可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也需要转义,所以\\表示的字符就是\等等
|
>>> print ( 'i\'m ok.' ) i'm ok. >>> print ( 'i\'m learning\n python.' ) i'm leanring python. >>> print ( '\\\n\\' ) \ \ |
但是,如果字符串里面很多字符串需要转义,就需要添加很多,为了简化,python还允许用r""(或者r"")表示内部的字符串默认不转义。
|
>>> print ( '\\\t\\' ) \ \ >>> print (r '\\\t\\' ) \\\t\\ |
如果字符串内部很多换行,用\n写在一行里不好阅读,为了简化,python允许用"'…"'的格式表示多行内容:
|
>>> print ( '''line1 line2 line3''' ) line1 line2 line3 |
2.创建字符串
|
str1 = "hello world" str2 = 'you are good' |
3.字符串运算
3.1字符串连接
3.1.1 使用加号进行连接
|
#字符串的连接,通过"+"进行连接 s1 = 'welcome ' s2 = 'to guangzhou' print (s1 + s2) |
输出:
welcome to guangzhou
注意:字符串 + 数字,这样会报错,不同类型的不能相加
3.1.2 使用","进行连接【tuple类型】
|
s1 = 'hello' s2 = 'world' print (s1, s2) #使用","连接的时候,在","的位置会产生一个空格 |
输出:
hello world
3.1.3 使用%格式化连接
|
s1 = 'hello' s2 = 'world' print ( "%s %s" % (s1, s2)) |
输出:
hello world
3.1.4 使用join函数进行连接
|
s1 = [ 'hello' , 'world' ] print ("".join(s1)) print ( "*" .join(s1)) |
输出:
helloworld
hello*world
注意:"".join()函数只需要传递一个参数【字符串、列表、元组、字典(输出无序)、集合(输出无序),其中的元素应该是字符串类型】。
3.2 重复输出字符串
|
#重复输出字符串,通过乘法的方式实现 s3 = 'good' print (s3 * 3 ) |
输出:
goodgoodgood
3.3 获取字符串中的字符
|
#通过索引的方式实现 #索引:给一个字符串中的字符从0开始编号,也称为下标 #索引的取值范围:[0,len(str)-1] #访问方式: 变量名称[索引] str3 = 'good' print (str3[ 0 ]) #索引值还可以从-1开始,-1代表倒数第一个字符 print (str3[ - 1 ]) |
输出:
g
d
3.3 截取字符串
|
# 通过下标截取字符串 str1 = "hello world" print (str1[ 3 : 6 ]) #注意:截取字符串的范围是str[start : end] 它是一个前闭后开的区间[start,end) #如果n的值超过了字符串的最大长度,则仍然截取原下标的长度 #从开头截取到指定索引之前[0,5) print (str1[: 5 ]) #从指定截取到结尾[4,len(str1)) print (str1[ 4 :]) #注意在使用str[start : end]来截取字符串的时候,若start不写默认从第一个字符开始 #若end不写,则默认到最后一个字符结束。取头去尾。 print ( "012345" [ 1 : - 1 ]) |
输出:
lo
hello
o world
1234
3.5 判断是否包含指定字符
|
#判断字符串中是否包含某指定字符串 str4 = "you are a good boy" print ( "good" in str4) #若包含有则返回true否则为false |
输出:
true
3.6 格式化输出
|
#通过%来改变后面的字母或者是符号的含义,%被称为占位符 # %s:格式化字符串 # %d:格式化整数 # %f:格式化浮点数,可指定小数点后的精度 age = 18 name = "丽丽" weight = 45.5 print ( "my name is %s , i am %d year old and my weight is %.2f kg" % (name, age, weight)) #注意:%.nf表示精确到小数点后n位,会四舍五入 |
输出:
my name is 丽丽 , i am 18 year old and my weight is 45.50 kg
4.关于字符串常用函数
4.1 eval(str)
功能:将字符串str当成有效的表达式来求值并返回计算结果。
可以把list,tuple,dict和string相互转化
|
>>>num1 = eval ( '123' ) >>> print (num1) 123 >>>num2 = eval ( "[1, 2, 3]" ) >>> print (num2) [ 1 , 2 , 3 ] >>> num3 = eval ( "12-3" ) >>> print (num3) 9 |
4.2 len(str)
功能:返回当前字符串的长度(字符的个数)
|
>>> len ( "you are good" ) 12 |
4.3 str.lower()
功能:返回一个把字符串中的大写字母转换为小写字母 的字符串
|
>>> str = "hello world" >>> print ( str .lower()) hello world |
注意:此方法不改变原本的字符
4.4 str.upper()
功能:返回一个把字符串中的小写字母转换为大写字母的字符串
|
>>> str = "hello world" >>> print ( str .upper()) hello world |
4.5 str.swapcase()
功能:返回一个把字符串中的大写字母转为小写字母,小写字母转换为大写字母的字符串
|
>>> str = "hello world" >>> print ( str .swapcase()) hello world |
4.6 str.capitalize()
返回一个首字母大写,其他小写的字符串
|
>>> str = "hello world" >>> print ( str .capitalize()) hello world |
4.7 str.title()
返回一个每个单词首字母大写的字符串
|
>>> str = "hello world" >>> print ( str .title()) hello world |
4.8 str.center(width[, fillchar])
功能:返回一个指定宽度的居中字符串,fillchar为填充的字符串,默认使用空格
|
>>> str = "hello world" >>> print ( str .center( 50 , "*" )) * * * * * * * * * * * * * * * * * * * hello world * * * * * * * * * * * * * * * * * * * * |
4.9 str.ljust(width[, fillchar])
功能:返回一个指定宽度的左对齐字符串,fillchar为填充字符。默认使用空格填充
|
>>> str = "hello world" >>> print ( str .ljust( 50 , "*" )) hello world * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |
4.10 str.rjust(width[, fillchar])
功能:返回一个指定宽度右对齐字符串,fillchar为填充字符,默认使用空格填充
|
>>> str = "hello world" >>> print ( str .rjust( 50 , "*" )) * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * hello world |
4.11 str.zfill(width)
功能:返回一个长度为width字符串,原字符串右对齐,前面补0
|
>>> str = "hello world" >>> print ( str .zfill( 50 )) 000000000000000000000000000000000000000hello world |
4.12 str.count(str [,start][, end])
功能:返回字符串中str出现的次数,可以指定一个范围,若不指定则默认从头到尾,匹配的时候是区分大小写的。
|
>>> str = "hello world" >>> print ( str .count( "hello" , 0 , 10 )) 0 |
4.13 str.find(str1[, start][, end])
功能:从左到右检测str1字符串是否包含在字符串中,可以指定范围,默认从头到尾。
返回的是第一次出现的开始的下标,若未查询到,则返回-1
|
>>> str = "hello world" >>> str1 = "llo" >>> print ( str .find(str1, 0 , 10 )) 2 |
4.14 str.rfind(str1[, start][, end])
功能:类似于str.find()
,不过是从右边开始查找
|
>>> str = "hello world" >>> str1 = "llo" >>> print ( str .rfind(str1, 0 , 10 )) 2 |
4.15 str.index(str1[, start = 0] ,[ end = len(str)])
功能:类似于find()
,与find()
不同的是,如果str1不存在的时候会报一个异常
|
>>> str2 = "hello world" >>> str1 = "hello" >>> print (str2.index(str1, 0 , 10 )) valueerror: substring not found |
4.16 str.lstrip()
功能:截掉字符串左侧指定的字符串,默认为空格
|
>>> str = '**** you are very good' >>> print ( str .lstrip()) >>> print ( str .lstrip()) * * * * you are very good >>> print ( str .lstrip( "*" )) you are very good |
4.17 str.rstrip()
功能:截掉字符串右侧指定的字符串,默认为空格
|
>>> str = '**** you are good****' >>> print ( str .rstrip()) * * * * you are good * * * * >>> print ( str .rstrip( "*" )) * * * * you are good |
|
str1 = "*nih*a*o*" print (str1.strip( '*' )) |
输出:
nih*a*o
4.18 string.split(str="", num=string.count(str))
功能:以 str 为分隔符切片 string,如果 num有指定值,则仅分隔 num 个子字符串
str – 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。 num – 分割次数
|
>>> str1 = "hello you are good" >>> str1.split() [ 'hello' , 'you' , 'are' , 'good' ] >>> str1.split( " " , 2 ) [ 'hello' , 'you' , 'are good ' ] |
4.19 str1.splitlines([keepends])
功能:字符串会按照行(‘\r','\r\n','\n')进行分割,返回一个包含各行作为元素的列表,如果参数keepends的值为false,不包含换行符,如果为true,则保留换行符。参数keepends默认为false。