python中的string相关用法(1)

python中的string相关用法(1)

今天自学python中的额时候,发现了很多技巧性的方法,于是幡然醒悟,觉得脑子并不够用,是时候做个笔记了。
注:以下的内容多数来自周伟那本python教材,自己加以整理和利用……我是一个苦逼的大学生,诸位高手大神发现错误,还望及时指出。

纪念我的第一次写博客……


字符串的格式化输出

这个没说的,举个栗子:

>>>age=21
>>>> name="Simon"
>>> print "name is %s,age is %d" %(name,age)

注意:顺序和前面的出场顺序相同,且对应的类型应该一致。
常用的:%s替换字符串,%d替换数字,%f格式化浮点数,指定精度,大家有兴趣可以试一下看看有什么惊喜。
(我帮你们这群懒人试了。如下:)

>>> print "f is %f" %1.23
f is 1.230000
>>> print "可以指定位数 %.1f"%3.1415
可以指定位数 3.1

还可以对齐输出:

>>> word="hello"
>>> print word.center(20)
       hello        
>>> print word.center(20,"*")
*******hello********
>>> print word.ljust(0)
hello
>>> print word.rjust(20)
               hello

注意都是类中的方法。20代表将hello算在内一共输出20个字符。

strip()函数

strip()函数可以去掉字符串中的转义字符和空格。但是这个空格只能去掉第一个字母之前和最后一个字母之后的,如果字符串中本身有空格,那是去不掉的。
举个栗子:

>>> s="\n  hello world   \n "
>>> print s

  hello world   

>>> print s.strip()
hello world

字符串的合并

在java中一个 + 是多么省事的事情啊。
其实在python中也可以,但是就只能针对于str+str这种类型的了。

>>> s2="Simon"
>>> s22="is cool"
>>> print s2+s22
Simonis cool
>>> age=21
>>> print s2+age

Traceback (most recent call last):
  File "<pyshell#30>", line 1, in <module>
    print s2+age
TypeError: cannot concatenate 'str' and 'int' objects

官人别急,素贞用int(age) 一下,也是可以的。
另外python提供了 join()函数,join()函数和列表更配哦
举个栗子:

>>> l=["Simon","is","cool"]
>>> print "".join(l)
Simoniscool

简单粗暴到连空格都不加。

字符串的截取

字符串的截取简直so easy。
字符串支持索引,索引扩展一点就是逆天的切片功能。
切片的格式如下:

  • string[start:end:step]

举个栗子:

>>> s="Simon is so cool"
>>> print s[0]
S
>>> print s[2:10:2]
mni 

注意end的那个值是取不到的。
三个参数都可以省略。

>>> print s[::2]
Smni oco

如果要同时截取多个字符串,那就要请出split()函数了:

  • split([char][,num])

char是分割的字符串,默认是空格。
实践一下:

>>> l=raw_input("请输入用户名用空格分开\n").split()
请输入用户名用空格分开
Simon Amy Tom
>>> print l
['Simon', 'Amy', 'Tom']

可以将用户输入的东西分成一个列表返回来。
当然你要是非得用逗号隔开也没办法:

>>> l=raw_input("请输入用户名用逗号分开\n").split(",")
请输入用户名用逗号分开
Simon,Amy,Tom
>>> print l
['Simon', 'Amy', 'Tom']

至于num参数是指定分成几个片段。用法自己动手试一下。

startswith()和endswith()函数

  • startswith(substring[,start[,end]])

其中的start和end其实就是切了个片,看看在这个片是不是以substring开头(或结尾)。

>>> s="Simon is so cool"
>>>> print s.startswith ("Si")
True
>>> print s.startswith ("Simon",0,3)
False
>>> print s.startswith ("Simon",0,7)
True

如果你实在懒得算end的值,那这样:

>>> print s.startswith ("Simon",0,len(s))
True

字符串的反转

python没有善良到给你整个逆转的字符串。
如果你是个勤劳的小蜜蜂,不辞辛劳遍历一遍,那这样做也没什么问题:

>>> def reverse(s):
    out=""
    l=list(s)
    for i in range(len(l),0,-1):
        out+="".join(l[i-1])
    return out

>>> print reverse("hello")
olleh

你肯定不勤劳,还嫌上面这种方法笨对不对?

其实str没有反转的方法,但是list有啊?
要知道把str变成list都不用把冰箱门儿打开……

举个栗子:

>>> def reverse(s):
    l=list(s)
    l.reverse()
    s="".join(l)
    return s

>>> print reverse("hello")
olleh

虽然看着没简单多少,至少复习了一下join()函数对不对?

你要是还嫌麻烦,那我要是不憋个大招叫你看看,你都不知道马王爷几只眼……

>>> s="hello"
>>> print s[::-1]
olleh

其实是用到了切片功能。-1是反着来的意思。
其实人家原来的用法是这个样子的:

>>> s="hello"
>>>> print s[5:1:-1]
oll

注意如果是-1,那前边也得倒着写。
你可以理解为是切了个片,又倒了一下。

字符串的查找和替换

送你几个函数,不用谢了。
查找:find(),rfind()

  • find(substring[,start[,end]])
    举个栗子:
>>> s="hello"
>>>> print s.find("hi")
-1
>>> print s.find("l")
2
>>> print s.find("ll")
2

找不到返回-1

另一个rfind()是从后边找的意思。

>>> s="hello"
>>> print s.find("l")
2
>>> print s.rfind("l")
3

你这么聪明,一定猜到start和end就是切了个片

替换:replace()

  • replace(old,new[,max])
    old被替换为new max次

举个栗子:

>>> s="hello amy,hello tom"
>>>> print s.replace("hello","byebye",1)
byebye amy,hello tom

日期和字符串的相互转换

time模块提供了函数strftime()

  • strft(format[,tuple])
    返回一个字符串。其中的format是类似于
    &Y-%m-&d
    的格式。tuple是时间元组,一般也不用自己写。

举个栗子:

>>> import time
>>>> print time.strftime("%Y-%m-%d-%X",time.localtime())
2016-10-23-22:45:54

其中%Y的不一样,最后的结果也不一样。

这里写图片描述

小结:第一次写博客,果然很累。
蜗牛要洗澡去了,再不洗宿舍停水了。

欲知高级用法,请听下回分解。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值