Python-字符串

字符串是程序常用的数据类型,在实际应用中经常需要对字符串进行增、删、减、查找、截取、格式化等操作。

访问与截取

python中的字符串由于属于序列,故可以用“索引”、“切片”访问与截取子串,也可以用split()获取。

str1='我今年才十八岁'

str2='numbers:1,2,3,4,5,6,7,8,9,10'

print(str1[])#索引

print(str1[:3])#切片

print(str1[:3:2])#切片,设置步长为2

out:

我今年

我年

#split()一般是对有规律的字符串分隔,默认分隔符为空格

print(str2.split(','))

out:

['numbers:1','2','3','4','5','6','7','8','9','10']

#将字符串分隔为3个子串

print(str2.split(',',2))

out:

['numbers:1','2','3,4,5,6,7,8,9,10']

格式化

python将若干值插入到带有“%”标记的字符串中

“%S%S”%(str1,str2)

一个字符串输出

print('字符串%s操作 '%('格式化'))

out:

字符串格式化操作

混合格式输出

print('今天是%d年%d月%d日%s'%(20118,4,6,'农历二月二十一'))

out:

今天是20118年4月6日农历二月二十一

动态随机格式化输出

importrandom

str=['小明','小红','小黄','小白','小黑','小雪']

foriinrange(1,4):

random_num = random.randint(1,len(str))

print('第%d名是%s'% (i,str[random_num-1]))

str.pop(random_num-1)

out:

第1名是小黄

第2名是小明

第3名是小雪

python格式化字符串的替代符及其含义

对齐

str='今晚吃鸡,大吉大利!'

print(str)

print(str.center(20))#左右两侧各输出5个空格

print(str.center(20,"*"))#左右两侧各输出*号

print(str.ljust())#左对齐,默认输出值

print(str.ljust(20,'*'))#左对齐,并填充*号

print(str.rjust(20))#右对齐

print(str.rjust(20,'*'))#右对齐,并填充*号

out:

今晚吃鸡,大吉大利!

今晚吃鸡,大吉大利!

*****今晚吃鸡,大吉大利!*****

今晚吃鸡,大吉大利!

今晚吃鸡,大吉大利!**********

今晚吃鸡,大吉大利!

**********今晚吃鸡,大吉大利!

转义

计算机中存在可见字符和不可见字符。可见字符是指键盘上的字母、数字和符号,不可见字符是指换行、回车等字符。对于不可见字符可以使用转义符来表示,python中用“\”作为转义符。

print('小明:\"今晚吃什么?\"')

print('小红:\"我们\'吃鸡\'吧!\"')

out:

小明:"今晚吃什么?"

小红:"我们'吃鸡'吧!"

r格式原字符串输出(无须输入转义符,可减少输入操作)

str=r'小明说:"下雨了!"'

print(str)

out:

小明说:"下雨了!"

python转义字符表

合并

“+”号合并

str1='我今年才十八岁'

str2='但生活像极了八十岁'

print(str1 +','+ str2)

out;

我今年才十八岁,但生活像极了八十岁

join()函数合并

str1='我今年才十八岁'

str2='但生活像极了八十岁'

str3='你说可笑不可笑?'

str=[str1,str2,str3]

print(','.join(str))

out:

我今年才十八岁,但生活像极了八十岁,你说可笑不可笑?

两种方式各有千秋,哪种方便就用哪种。

查找

find(substring,[,start[,end]])

substring带查找的子串

start开始搜索的索引位置

end结束搜索的索引位置

str1='今年是2018年'

print(str1.rfind('年'))

print(str1.find('年'))

print(str1.find('今年'))

print(str1.rfind('今年'))

print(str1.find('今天'))

print(str1.rfind('今天'))

out:

7

1

-1

-1

find()函数与rfind()函数是有区别的,find()函数是从头部开始查找到尾部,而rfind()函数是从尾部查找到头部。当查到的子串是唯一值时,两函数返回的索引值一致,但存在多个值时,两函数返回的索引值不同。但无值时,返回的结果均为-1。

替换

replace(old,new,[,max])

old将被替换掉额字符串

new替换old的字符串

max使用new替换old的次数,默认值为全部替换

str1='hello world,hello china '

print(str1.replace('hello','hi'))

print(str1.replace('hello','hi',1))

print(str1.replace('hello','hi',2))

out:

hi world,hi china

hi world,hello china

hi world,hi china

转换

从时间到字符串的转换

日期类型转换为字符串类型,采用的time模块的strftime()函数

strftime(formate[,tuple])

formate格式化日期的特殊字符,如“%Y-%m-%d”

tuple需要转换的时间,用元祖储存,其元素分别表示年、月、日、时、分、秒。

importtime

时间到字符串转换

print(time.strftime('%Y-%m-%d %X'),time.localtime())

out:

2018-04-06 21:51:55

time.struct_time(tm_year=2018,tm_mon=4,tm_mday=6,

tm_hour=21,tm_min=51,tm_sec=55,tm_wday=4,tm_yday=96,tm_isdst=)

从字符串到时间的转换

字符串到时间转换需要进行两次转换,采用time模块和datetime类。先用strptime函数转换为元祖,在用datetime函数转化为时间

日期格式化符号表

运算

python直接用“==”、“!=”运算符比较两个字符串的内容。

str1='我今年才十八岁'

str2='numbers:1,2,3,4,5,6,7,8,9,10'

str3='numbers:1,2,3,4,5,6,7,8,9,10'

deffunc(x,y):

ifx==y:

print("相同")

else:

print("不相同")

func(str1,str2)

func(str1,str3)

func(str2,str3)

out:

不相同

不相同

相同

*号重复输出

print('hello\n'*3)

out:

hello

hello

hello

in判断

str='apple'

if'a'instr:

print('存在a字符串')

if's'not instr:

print('不存在s字符串')

反转

列表reverse()函数反转

str1='我今年才十八岁'

defreverse(s):

li=list(s)

li.reverse()

s="".join(li)

print(s)

reverse(str1)

out:

岁八十才年今我

切片反转

str1='我今年才十八岁'

defreverse(s):

print(s[::-1])

reverse(str1)

三引号原味输出

str='''

静夜思

唐朝诗人 李白 字太白

床前明月光,

疑是地上霜。

举头望明月,

低头思故乡。

'''

print(str)

out:

静夜思

唐朝诗人 李白 字太白

床前明月光,

疑是地上霜。

举头望明月,

低头思故乡。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180407G01PGY00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券