Python入门-字符串

一、字符串索引

1、处理字符串的时候,需要经常循环访问各个字符。例如有某个字符串mystr,需要得到各个字符,可以使用字符串索引:

>>> mystr='Terdata'
>>> mystr[0]
'T'
>>> mystr[1]
'e'
>>> mystr[2]
'r'
>>> mystr[3]
'd'
>>> mystr[4]
'a'
>>> mystr[5]
't'
>>> mystr[6]
'a'

从结果可以看到,mystr字符串的长度为n,其的第一个字符为mystr[0],mystr[1]为第2个字符,依次类推,mystr[n-1]为最后一个字符。

2、负数索引

Python提供了一个比较简单便利的负数索引,其理念是,沿着从右向左的方式,用负数表示字符串的索引:

>>> s='Evan'
>>> s[-1]
'n'
>>> s[-2]
'a'
>>> s[-3]
'v'
>>> s[-4]
'E'

因此,字符串的最后一个字符为s[-1]。

3、for循环访问字符

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

#codesum.py
def codesum1(s):
    """Return the sums of the
    character code of s.
    """
    total=0
    for c in s:
        total=total+ord(c)
    return total
这样for循环计算每个字符的编码,如a的ASCII编码为97,b为98。

所以结果为:

>>> codesum1('Hello world')
1084

另外一个方法是循环字符的长度:

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

结果如下:

>>> codesum2('Evan')
394

4、字符

字符串是由字符组成,每个字符都有对应的字符编码,可以使用ord函数来获取:

>>> ord('a')
97
>>> ord('b')
98
>>> ord('A')
65

而给定字符编码,则可以使用chr函数来获取相应的编码:

>>> chr(98)
'b'
>>> chr(97)
'a'
>>> chr(65)
'A'

转义字符:并不是所有字符都是可见的,例如换行符、回车符和制表符。

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

>>> print('\' and \" are good')
' and " are good
>>> print('\\ must be written \\\\')
\ must be written \\
在Python中,表示换行的标准方式是使用字符:\n

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

转义字符是单个字符,必须深刻理解。在计算字符串的长度时候,并不将\n视为额外的符号。如:

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


二、字符串切片
要对字符串执行切片操作,可以指定两个索引:要提取第一个字符的索引;要提取最后一个字符的索引加1。如:

>>> s='Guang Zhou'
>>> s[0:4]
'Guan'
>>> s[0:5]
'Guang'
>>> s[6:10]
'Zhou'

用于切片的索引与用于访问各个字符的索引相同:第一个所以总是为零,而最后一个索引总是比字符串长度小于1。一般而言,

s[begin:end]返回的是从索引begin到end-1的字串。

请注意:如果s是一个字符串,则需要访问索引i对应的字符,可以使用s[i]或s[i:i+1]。

获取切片的途径:如果你省略了切片的起始索引,Python将其假定为0;如果你省略了切片的终止索引,Python将假设其为你要提取到的字符串末尾。如:

>>> s='Guang Zhou'
>>> s[:5]
'Guang'
>>> s[6:]
'Zhou'
>>> s[:]
'Guang Zhou'
再看看这个切片的示例,主要获取文件的扩展名:

#extension.py
def get_txt(fname):
    """Returns the extension of file
    fname.
    """
    dot=fname.rfind('.')
    if dot==-1: # fname nothing
       return ''
    else:
        return fname[dot+1:]

结果如下:

>>> get_txt('data.xls')
'xls'
>>> get_txt('pazi.py')
'py'
>>> get_txt('test')
''

执行切片操作的时候,也可以使用负数索引的切片。

>>> s='Guang zhou'
>>> s[-9:-4]
'uang '
>>> s[-8:-3]
'ang z'
>>> s[-10:-5]
'Guang'
>>> s[:-4]
'Guang '





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值