python序列之:字符串(1)

时间:2023-01-04 10:26:08

字符串属于python的序列类型,序列的成员有序排列,并且可以通过下标偏移量访问得到它的一个或几个成员。

1、成员关系操作符:in/not in:返回值为True或者False

2、用步长索引来进行拓展的切片操作:

s = "abcdefgh"
print s[::-1]
print s[::-2]
print s[::2]
输出结果为:

>>> 
hgfedcba
hfdb
aceg
>>> 

3、切片索引的更多内容:

s = "abcdefgh"
for i in [None]+range(-1,-len(s),-1):
print s[:i]
输出结果为:

>>> 
abcdefgh
abcdefg
abcdef
abcde
abcd
abc
ab
a
>>> 

4、特别说明,字符串类型是不可改变的,所以要改变一个字符串就必须通过创建一个新的字符串的方式来实现。也就是说你不能只改变一个字符串的一个字符或者一个子串,然而,通过拼凑一个旧的字符串的各部分来的到一个新字符串是允许的。

5、字符串的比较:

s = "abc"
t = "xyz"
print s<t
输出True

字符串是按照ascii值的大小来比较的。

6、切片操作

s = "abcdefgh"
print s[:]
print s[-1]
print s[1]
print s[-3:-1]
print s [1:5]
输出结果为:

>>> 
abcdefgh
h
b
fg
bcde
>>> 

7、string模块预定义字符串:

import string
print string.uppercase
print string.lowercase
print string.letters
print string.digits
输出结果为:

>>> 
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
0123456789
>>> 

8、tips:从性能的角度来考虑,把重复的操作作为参数放到循环里面进行时非常低效的:

例如:

while i<len(myString)

print "something"

这样的代码,把大把的时间都浪费在重复计算字符串myString的长度上面了,更为高效的方法是:

length = len(myString)

while i<length

print "something"

9、字符串链接:

如下为字符串连接的两种方式:

s = ".".join(('abc','def','ghi'))
print s
s = "abc"+"def"
print s
输出结果:

>>> 
abc.def.ghi
abcdef
>>> 

10、字符串格式化符号:

%c:转换成字符

%r:优先用repr函数进行字符串转换

%s:优先用str函数进行字符串转换

%d/%i:转成有符号十进制数

%u:转成无符号十进制数

%o:转成无符号八进制数

%x:转成无符号16进制数

%e:转成科学计数法

%f:转成浮点型(小数部分自然截断)

%%:输出%

整型输出正负号的方法:

print "%+d" % -4

11、字符串模版:更简单的替代品

from string import Template
s = Template('There are ${howmany} ${lang} Quotation Symbols')
print s.substitute(lang = 'Python',howmany = 3)
print s.safe_substitute(lang = 'Python')

输出结果为:

>>> 
There are 3 Python Quotation Symbols
There are ${howmany} Python Quotation Symbols
>>> 

注意,使用substitute时,key的个数必须要全,否则会报错,然而safe_substitute则允许缺少key值。


今天就到这里啦~~兔几要去蹦哒一会儿了~~~