Python入门编程之字符串

1.1字符串索引

1.1.1字符串索引

Python使用方括号来标识字符串索引:方括号内的数字指出了要获取那个字符。Python中,最小字符串索引总是0,而最大的索引总是比字符串长度小1。如果索引超出了字符串末尾,将导致“超出范围”错误。

>>> s='apple'
>>> s[0]
'a'
>>> s[1]
'p'
>>> s[2]
'p'
>>> s[3]
'l'
>>> s[4]
'e'
>>> s[5]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: string index out of range

1.1.2 负数索引

沿着从右向左的方向,用负数表示字符串中的索引:

>>> s='apple'
>>> s[-1]
'e'
>>> s[-2]
'l'
>>> s[-3]
'p'
>>> s[-4]
'p'
>>> s[-5]
'a'

字符串的最后一个字符为是[-1]。

1.1.3 使用for循环访问字符

下面程序计算给定字符串的字符编码总和:

#codesum1
def codesum1(s):
    """Returns the sums of the character codes of s."""
    total=0
    for c in s:
        total=total+ord(c)
    return total

调用示例:

>>> codesum1('hello world')
1116

常规实现:

def codesum2(s):
    """Returns the sums of the character codes of s."""
    total=0
    for i in range(len(s)):
        total=total+ord(s[i])
    return total

 

>>> codesum2('hello world')
1116

1.2 字符

所有字符都有对应的字符编码,可以用函数ord来获悉;

>>> ord('a')
97
>>> ord('b')
98
>>> ord('c')
99

给定字符编码,可使用函数chr来获悉对应字符

>>> chr(97)
'a'
>>> chr(98)
'b'
>>> chr(99)
'c'
>>> chr(49)
'1'
>>> chr(50)
'2'

1.2.1 转义字符

并非多有字符都有可视的标准符号。例如,换行符、回车字符和制表符都是不可见的,虽然它们带来的效果可见。这些字符属于空白字符--在印刷页面上显示为空白。

为处理空白字符以及其他不可打印的字符,Python使用一种特殊的表示法--转义序列(字符)。下面是一些常见的转义字符:

\\             反斜杠

\'             单引号

\"            双引号

\n           换行符

\r            回车

\t            水平制表符

要在字符串中包含反斜杠、单引号和双引号,通常需要使用对应的转义字符。例如:

>>> print('\'and\" are quotes')
'and" are quotes
>>> print('\\ must be wrotten \\\\')
\ must be wrotten \\

在Python中,表示换行的标准方式是使用字符\n:

>>> print('one\ntwo\nthree')
one
two
three

转义字符是单个字符,明白这一点很重要。为让Python知道下一个字符是特殊字符,必须使用\,但在计算字符串的长度时,并不将\为额外的字符。例如;

>>> len('\\')
1
>>> len('a\nb\nc')
5

1.3 字符串切片

>>> food='apple pie'

>>> food[0:5]
'apple'
>>> food[6:9]
'pie'

1.3.1 获取切片的捷径

>>> food='apple pie'
>>> food[:5]
'apple'
>>> food[6:]
'pie'

>>> food[:]
'apple pie'

下面是一个很有用的切片示例,这个函数返回文件名中的扩展名:

#extension.py
def get_ext(fname):
    """Returns the extension of file fname
    """

    dot = fname.rfind('.')
    if dot == -1:
        return ''
    else:
        return fname[dot + 1:]

函数演示:

>>> get_ext('hello.py')
'py'
>>> get_ext('hello.txt')
'txt'

>>> get_ext('hello')
''

函数工作原理:利用rfind从右向左查找'.'的索引,返回‘.’后面的部分;如果不包含 '.'则返回空字符串。

1.3.2 使用负数索引的切片

>>> food='apple pie'
>>> food[-9:-4]
'apple'
>>> food[-3:]
'pie'
>>> food[-3:-1]
'pi'
>>> food[-3:0]
''

1.4 标准字符串函数

1.4.1 测试函数

所有的测试函数都返回True或False。测试函数有时也叫布尔函数或谓词

字符串测试函数
函数名什么情况下返回True

s.endswith(t)

s.startswith(t)

s.isalnum()

s.isalpha()

s.isdecimal()

s.isdigit()

s.isidentifier()

s.islower()

s.isnumeric()

s.isprintable()

s.isspace()

s.istitle()

s.isupper()

t in s

s以字符串t结尾

s以字符串t开头

s只包含数字和字母

s只包含字母

s只包含表示十进制数字的字符

s只包含数字字符

s是合法标识符

s只包含小写字母

s只包含数字

s只包含可打印字符

s只包含空白字符

s是个大小写符合标题要求的字符串

s只包含大写字母

s包含字符串t

 

1.4.2 搜索函数

在字符串中查找子串的方式有多种。函数index和find之间的差别在于没有找到指定字串时的情形。例如:

>>> s,index('eee')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'index' is not defined
>>> s.find('eee')
-1

函数index引发异常ValueError。如果没找到指定子串,函数find将返回-1。

字符串搜索函数通常从左到右(从开头到结尾)搜索,但以r打头的函数从右往左搜索。例如:

>>> s='cheese'
>>> s.find('e')
2
>>> s.rfind('e')
5

>>> s.find('ee')
2
>>> s.rfind('ee')
2

一般那而言,函数index和find返回传入字符串第一次出现的起始位置索引,而rfind和rindex返回传入字符串最后一次出现时的起始位置索引。

1.4.3 改变大小写的函数

Python提供了各种修改字母大小写的函数。如下表所示。别忘了。Python绝不会修改字符串:在所有这些函数中,Python都会创建并返回一个新的字符串。我们谈论字符串是,常常让人觉得字符串被修改,但这只是为了方便措辞,并不意味着字符串真的被修改。

改变大小写的函数
函数名返回的字符串

s.capitalize()

s.lower()

s.upper()

s.swapcase()

s.title()

将s[0]改为大写,其余为小写

让s的所有字母都小写

让s的所有字母都大写

将小写字母改为大写,将大写字母改为小写

让s的大小符合标题要求

 

1.4.4 设置格式的函数

下表列出了设置字符串格式的函数,它们让你能够美化字符串,以便向用户显示或打印到文件。

字符串函数format功能非常强大,包含用于设置字符串格式的微型语言。要使用函数format,你需要给他提供变量或值,如下:

>>> '{0} likes {1}'.format('Jack','Ice cream')
'Jack likes Ice cream'

字符串中的{0}和{1}引用format的参数:它们将被替换为相应字符串或变量的值。你还可以使用关键字参数的名称:

>>> '{who} {pet} has fleas'.format(who='my',pet='dog')
'my dog has fleas'

这些示例演示了format的基本用法,还有很多其他选项可用于指定字符串间距、将数字转换为字符串等。

设置字符串格式函数
函数名返回的字符串

s.center(n,ch)

s.ljust(n,ch)

s.rjust(n,ch)

s.format(vars)

 

包含n个字符的字符串,其中s位于中央,两边用字符填充

包含n个字符的字符串,其中s位于左边,右边用字符ch填充

包含n个字符的字符串,其中s位于右边,左边用字符ch填充

见上文

1.4.5 剥除函数

剥除函数用于删除字符串开头或结尾多余的字符,如下表所示。默认情况下,将剥除空白字符;如果指定了一个字符串参数,将剥除该字符串中的字符,如下;

>>> name = ' Bill Gates '
>>> name.strip()
'Bill Gates'
>>> name.lstrip()
'Bill Gates '
>>> name.rstrip()
' Bill Gates'

>>> title='_-_- Happy Days!! _-_-'
>>> title.strip('-_')
' Happy Days!! '
>>> title.strip('_ -')
'Happy Days!!'
>>> title.strip('_-')
' Happy Days!! '

字符串剥除函数
函数名返回的字符串

s.strip(ch)

s.lstrip(ch)

s.rstrip(ch)

从s开头和末尾删除所有包含在字符串ch中的字符

从s开头(左端)删除所有包含在字符串ch中的字符

从s末尾(右端)删除所有包含在字符串ch中的字符

 

1.4.6 拆分函数 

拆分函数将字符串拆分成多个字串,如下表,函数partition和rpartition将字符串拆分成3部分:

>>> url.partition('.')
('www', '.', 'baidu.com')

>>> url.rpartition('.')
('www.baidu', '.', 'com')

这两个函数总是返回一个这样的值:它由3个字符串组成,形式为(head,sep,tail)。这种返回值位元组。

字符串拆分函数
函数名返回的字符串

s.partition(t)

 

s.rpartition(t)

s.split(t)

 

s.rsplit(t)

s.splitlines()

将s拆分为三个字符串(head、t和tail),其中head为t前面的字符串,tail为t后面的字符串

与partition相同,但s从右端开始搜索t

以t为分隔符,将s划分为一系列子串,并返回一个字串组成的列表

与split相同,但从s的右端开始搜索t

返回一个由s中各行组成的列表

>>> url='www.baidu.com'
>>> url.split('.')
['www', 'baidu', 'com']
>>> story='long long ago, a princess ate an apple'
>>> story.split()
['long', 'long', 'ago,', 'a', 'princess', 'ate', 'an', 'apple']

函数split总是返回一个字符串列表;

1.4.7 替换函数

Python字符串自带了两个替换函数,如下。

s.replace(old,new) 将s中的每个old替换为new

s.expendtabs(n)    将s中的每个制表符扩展为空格,制表符宽度为n.

注意到使用替换函数可以轻松的删除字符串中的字串:

>>> s='good good study day day up
>>> s.replace('day','night')
'good good study night night up'
>>> s.replace('day','')
'good good study   up'

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值