Python 字符串

2018-06-28

Python字符串可以看做是一个包含字符的容器,一个顺序序列。其实,Python并没有字符这种数据类型,只有字符串。一个单独的字符可以看成是只包含一个元素的字符串。

1.字符串基础

字符串本质上是一个字符组成的序列。和其他编程语言不同,Python字符串不可变,一旦创建,原字符串就不能被修改。如果要得到一个更改的字符串版本,可以通过赋值给另一个字符串,或者将原字符串覆盖。

1.1 创建字符串

  • 单行字符串。把字符串用一对单引号或者双引号包裹,就可以创建一个单行字符串。用两种引号可以避免使用转义字符,这样就可以在单引号字符串中直接包含双引号。
    >>> 'this is string'
    'this is string'
    >>> "this is another string"
    'this is another string'
    >>> "this is the 'third' string"
    "this is the 'third' string"
    
  • 多行字符串。使用连续三个单引号,或者三个双引号。
    >>> lines = '''first line
    ... second line'''
    >>> print lines
    first line
    second line
    
  • 通过str()函数类型转换得到字符串。
    >>> str(3.14159265354)
    '3.14159265354'
    

1.2 转义字符

字符串中如果包含一些特殊符号,需要使用转义字符,比如\t表示制表符。

>>> 'I\'d like to'
"I'd like to"
>>> a="has a slash \\"
>>> print a
has a slash \

2. 字符串运算符操作

比如,令 a='Hello',常见的字符串运算符操作如下表。

操作符 含义 备注
+ 字符串拼接 ‘aa’+’bb’ 得到‘aabb’
* 重复输出字符串 a*2 输出结果:HelloHello
[] 通过索引获取字符串中的字符 a[1] 输出结果 e
[ : ] 截取字符串中的一部分 a[1:4] 输出结果 ell
in 成员运算符 – 如果字符串中包含给定的字符返回 True H in a 输出结果 1
not in 成员运算符 – 如果字符串中不包含给定的字符返回 True M not in a 输出结果 1
r/R 原始字符串 – 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。原始字符串除在字符串的第一个引号前加上字母”r”(可以大小写)以外,与普通字符串有着几乎完全相同的语法。 print r’\n’ 原样输出 \n

3. 字符串的元素操作

对字符串元素最常用的操作包括提取,替换和查找。

3.1 提取字符串中的字符

  • 通过索引号提取某一个字符元素。 比如,提取第一个字符"sixiangguo.net"[0],最后一个字符"Hello sixiangguo.net"[-1]
  • 切片。"Hello"[1:3], 如果从索引号0开始,可以省略0 "Hello"[:3],也可以设定截取的步长"Hello"[::2]

3.2 替换字符串中的字符

Python中的replace()方法是把old字符串替换成new字符串,如果指定替换次数max,则按照替换次数进行替换。old:字符串替换前的字符;new:替换后的字符;count:替换的次数,默认为0,不填表示全局替换。

>>> str.replace(old,new,count=0)
#例子
>>> str = "hello world! I love python!"
# 全局替换
>>> str.replace("l","@")  
'he@@o wor@d! I @ove python!'
# 替换指定次数
>>> str.replace("l","@",2)  
'he@@o world! I love python!'
# 多个字符替换,链式调用replace()
>>> str.replace("l","@",2).replace("o","$")  
'he@@$ w$rld! I l$ve pyth$n!'

3.2 查找字符串中的字符

python 字符串查找有4个方法, find, index是正序查找, rfindrindex是反向查找,从末尾向前。

  • find()方法:查找子字符串,若找到返回从0开始的下标值,若找不到返回-1
  • index()方法:在字符串里查找子串第一次出现的位置,如果查找不到子串,会抛出异常,而不是返回-1
  • rfind和rindex方法用法和上面一样,只是从字符串的末尾开始查找。
info = 'sixiangguo.net'
print info.find('a')
 
print info.find('a',1)##从下标1开始

print info.find('333')##查找不到返回-1

print info.index('a')

print info.index('33')


思想果(www.sixiangguo.net)原创,作者:无梨教主。转载注明作者 和 本文链接: http://www.sixiangguo.net/archives/476.html