正在玩命加载中 . . .

Python Note


字符串

字符串索引(下标)

在Python中,字符串可以像其它语言的数组一样进行索引使用,方法是:字符串变量名[索引]

索引是从0开始,最大的索引值是字符串长度-1,如果使用了超出最大值,将会出现索引错误。

>>> myStr = 'abcdefg'
>>> myStr[0]
'a'
>>> myStr[6]
'g'
>>> myStr[7]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: string index out of range

正向的索引也就是从字符串开始向尾部的方向,使用的数值逐渐增加。Python还支持负数的索引值,方向是从字符串尾部向字符串开始的方向,同样超出了索引界限,会出现索引错误:5.1-下标.py

# 下标:给字符串里面每一个字符定义的编号,可以通过下标访问到每一个字符。
# 下标从0开始,最大值是字符串总长度-1
# 访问方式:[下标]
mystr = 'abcdefg'
print('完整输出:', mystr)
print(mystr[0])
print(mystr[5])

# 下标可以为负,从字符串最后一个字符到字符串最开头的一个字符
# 从-1开始,直到-字符串总长度
print(mystr[-1])
print(mystr[-5])

# 下标越界访问会产生错误,不论正负
# print(mystr[7])
# print(mystr[-8])

运行结果如下:

完整输出: abcdefg
a
f
g
c

索引的对应关系见下表:

myStr a b c d e f g
正向 0 1 2 3 4 5 6
负向 -7 -6 -5 -4 -3 -2 -1

字符串函数

Python提供了很多用于字符串处理的函数,可以实现对字符串的各种处理。字符串是不可变数据类型,所以不能对字符串进行任何的修改。

参见:5.2-字符串操作1.py,5.3-字符串操作2.py

<1> find,rfind

查找字符串,严格区分大小写,返回值为字符串第一次出现所在的索引,后面的不管;未找到字符串,返回-1。

rfind从右边开始查找。

mystr.find(str, start=0, end=len(mystr))

例如:

>>> mystr = 'Hello World zhangsan and world'
>>> print('012345678901234567890123456789')
# 012345678901234567890123456789
>>> print(mystr)
Hello World zhangsan and world
>>> print(mystr.find('world'))
25
>>> print(mystr.find('Man'))
-1
>>> print(mystr.find('orld'))
7

<2> index,rindex

基本等同于find,区别:如果index查找不到,给出异常错误。

rindex从右边开始查找。

>>> print(mystr.index('Man'))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: substring not found

<3> startswith,endswith

返回是否以字符串开头或结尾。返回值为bool类型。

>>> print(mystr.startswith('He'))
True
>>> print(mystr.endswith('ld'))
True

<4> isalpha,isdigit,isalnum,isspace

判断字符串是否全是字母,数字,字母或数字,空格。如果是则返回True,否则返回False。注意空字符串在isspace判断的结果是False,因为空格是一个字符,而空字符串没有字符。

>>> print(mystr.isalpha())
False
>>> print('1234'.isdigit())
True
>>> print('abcd1234'.isalnum())
True
>>> print('  '.isspace())
True
>>> print(''.isspace())
False

<5> count

统计字符串出现次数。

>>> print(mystr.count('orld'))
2

<6> replace

替换,第三个参数为替换的最大次数。

>>> print(mystr.replace('d', '==@=='))
Hello Worl==@== zhangsan an==@== worl==@==
>>> print(mystr.replace('d', '==@==', 2))
Hello Worl==@== zhangsan an==@== world

<7> capitalize,title,lower,upper

capitalize将字符串中的第一个字符大写;

title将字符串的每个单词首字母大写;

lower将全部字符改为小写;

upper将全部字符改为大写:

>>> print('abcd efgh'.capitalize())
Abcd efgh
>>> print('abcd efgh'.title())
Abcd Efgh
>>> print(mystr.lower())
hello world zhangsan and world
>>> print(mystr.upper())
HELLO WORLD ZHANGSAN AND WORLD

<8> join

使用字符串来连接join函数中参数的每一个元素,构造出一个新的字符串:

>>> print('_'.join(mystr))
H_e_l_l_o_ _W_o_r_l_d_ _z_h_a_n_g_s_a_n_ _a_n_d_ _w_o_r_l_d

<9> split,splitlines

用给定的字符串切分字符串。输出的结果是一个列表。splitlines按照行分隔,返回一个各行的列表。

>>> print(mystr.split(' '))
['Hello', 'World', 'zhangsan', 'and', 'world']
>>> print(mystr.split('l'))
['He', '', 'o Wor', 'd zhangsan and wor', 'd']

>>> mystr1 = 'hello\nworld\nOK'
>>> print(mystr1)
hello
world
OK
>>> print(mystr1.splitlines())
['hello', 'world', 'OK']

<10> partition,rpartition

将字符串分成三部分,注意如果切分的字符串没有的话,仍然是三部分。

rpartition 从右边开始分解。

>>> print(mystr.partition('zhangsan'))
('Hello World ', 'zhangsan', ' and world')
>>> print(mystr.partition('IT'))
('Hello World zhangsan and world', '', '')

<11> ljust,rjust,center

使字符串在给定的空间里左对齐,右对齐,居中对齐:

>>> print(mystr.ljust(60))
Hello World zhangsan and world
>>> print(mystr.rjust(60))
                              Hello World zhangsan and world
>>> print(mystr.center(60))
               Hello World zhangsan and world

<12> lstrip,rstrip,strip

去掉字符串左边,右边和两边的空格或给定的字符串,不会去掉字符串中间的空格或字符串:

>>> str1 = '    hello world   '
>>> print(str1.lstrip())
hello world
>>> print(str1.rstrip())
    hello world
>>> print(str1.strip())
hello world

列表

列表由一系列按特定顺序排列的元素组成。列表中的元素可以是不同类型的。列表使用[ ]括起所有元素,元素用逗号分隔开。

例如:

testList = [1, 'a']

遍历

对列表或其它复合数据类型中,把所有元素挨个进行操作,称之为遍历。可以使用循环对列表进行遍历:5.4-列表遍历.py

# 使用循环进行列表的遍历

mylist = ['abcd', 'zhangsan', 'jiangning']

# 使用for循环实现
for tempstr in mylist:
    print(tempstr)

# 使用while循环实现
i = 0
length = len(mylist)
while i < length:
    print(mylist[i])
    i += 1

结果为:

abcd
zhangsan
jiangning
abcd
zhangsan
jiangning

查找

不论是对列表的插入还是删除操作,或者是单纯的查找,都需要判定某个元素在列表中是否存在,Python使用in和index实现查找。使用count实现计数。例如:5.5-列表查找.py

# in, not in
mylist = ['abcd', 'zhangsan', 'jiangning']

if 'zhang' in mylist:
    print('存在')
else:
    print('不存在')

# index
mylist = ['a', 'b', 'c', 'a', 'b']
print(mylist.index('a', 0, 4))

# count
print(mylist.count('a'))

结果为:

不存在
0
2

添加/插入/修改

对列表可以添加元素,可以使用append,extend在列表的结尾处添加元素,也可以使用insert在列表中插入元素。例如:5.6-列表插入操作.py

# 添加操作

# append 添加,把添加内容直接作为元素添加
# 对列表操作,列表的内容会发生改变
mylist = ['abcd', 'zhangsan', 'jiangning']
print(mylist)
mylist.append('defg')
print(mylist)

# extend 添加,把列表拆成元素添加
# append 添加
mylist = ['abcd', 'zhangsan', 'jiangning']
appendlist = ['aaa', 'bbb']
mylist.append(appendlist)
print('append:')
print(mylist)
# extend
mylist = ['abcd', 'zhangsan', 'jiangning']
extendlist = ['aaa', 'bbb']
mylist.extend(extendlist)
print('extend:')
print(mylist)

# insert 在index位置前插入元素
print('insert:')
mylist = ['abcd', 'zhangsan', 'jiangning']
print(mylist)
mylist.insert(1, 'defg')
print(mylist)
# insert 对于列表的插入,等同于append做法
mylist = ['abcd', 'zhangsan', 'jiangning']
print(mylist)
mylist.insert(1, appendlist)
print(mylist)

# 对列表元素进行修改,使用索引定位到元素,直接赋值修改
mylist[1] = 'lisi'
print(mylist)

结果为:

['abcd', 'zhangsan', 'jiangning']
['abcd', 'zhangsan', 'jiangning', 'defg']
append:
['abcd', 'zhangsan', 'jiangning', ['aaa', 'bbb']]
extend:
['abcd', 'zhangsan', 'jiangning', 'aaa', 'bbb']
insert:
['abcd', 'zhangsan', 'jiangning']
['abcd', 'defg', 'zhangsan', 'jiangning']
['abcd', 'zhangsan', 'jiangning']
['abcd', ['aaa', 'bbb'], 'zhangsan', 'jiangning']
['abcd', 'lisi', 'zhangsan', 'jiangning']

删除

列表的删除操作有这几种:删除某一个元素,删除最后一个元素和删除某一个指定值的元素。例如:5.7-列表删除.py

# 删除:del, pop, remove
# del 删除给定下标的元素
print('del:')
mylist = ['a', 'b', 'c', 'a', 'b']
print(mylist)
del(mylist[1])
print(mylist)

# pop 删除最后一个或指定索引的元素
print('pop:')
mylist.pop()
print(mylist)

# remove 删除指定值的元素
# 一次只删除一个
print('remove:')
mylist.remove('a')
print(mylist)
mylist.remove('a')
print(mylist)

结果为:

del:
['a', 'b', 'c', 'a', 'b']
['a', 'c', 'a', 'b']
pop:
['a', 'c', 'a']
remove:
['c', 'a']
['c']

排序

通常情况下,列表中的元素有确定的顺序时,便于各种使用,所以要对列表中的元素进行排序。Python提供排序函数对列表进行排序:5.8-列表排序.py

# sort, reverse
mylist = [6, 3, 8, 4, 2, 6, 4]
print(mylist)
# 默认为升序排列
mylist.sort()
print(mylist)
# 如果需要降序排列,需要指定reverse=True
mylist.sort(reverse=True)
print(mylist)

# 字符串排序,根据字符集的值排序,数字<大写字母<小写字母
mylist = ['abcd', 'zhangsan', 'jiangning', 'Hello', '1234', '+-*/']
print(mylist)
mylist.sort()
print(mylist)

结果为:

[6, 3, 8, 4, 2, 6, 4]
[2, 3, 4, 4, 6, 6, 8]
[8, 6, 6, 4, 4, 3, 2]
['abcd', 'zhangsan', 'jiangning', 'Hello', '1234', '+-*/']
['+-*/', '1234', 'Hello', 'abcd', 'jiangning', 'zhangsan']

文章作者: LogicVan
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 LogicVan !
评论
  目录