字符串类型

在各种编程语言中,字符串都是很重要的数据类型,Python也不例外。

在Python中,字符串是不可变类型(如之前的数值类型,每次改变字符串的值时,都会创建新的字符串)

字符串的创建和赋值

  1. 使用单引号

    aString = 'Hello World!'

  2. 使用双引号

    anotherString = "Hello Python!"

    尽管,单双引号都可以创建字符串,但是如果是以下情况,使用单引号会出错:

     aString = "I'm Pythoner"
     print aString ## I'm Pythoner
    
     anotherString = 'I'm Pythoner' ##会直抛出接语法错误
     #除非用转义字符
     anotherString = 'I\'m Pythoner'
     print anotherString ## I'm Pythoner
    
  3. 使用三引号(''' ''' 或 """ """) 如果需要在字符串中包含众多特殊字符,使用单双引号定义固然可以,但是会很繁琐,而三引号就是为了解决这个问题。

    例子如下:

     cursor.execute("""
         create table users (
             login varchar(8),
             uid inter,
             pid inter
         )
     """)
    

    若使用单双引号定义会很繁琐。

转义字符

在前面我们使用单引号定义字符串 I'm Pythoner 时,为了正确输出,我们使用了“\”符号,它就是转义字符,它使单引号定义的字符串中的单引号正确输出。以下列举一些常用的转移字符:

  1. \' 输出单引号'
  2. \" 输出双引号"
  3. \n 换行
  4. \t 相当于输出一个制表符(键入tab键)
  5. \\ 输出反斜杠 \

字符串的访问

python中没有字符这个类型(C语言中有,即char型),而是用长度为1的字符串表示(也算是子串),所以我们可以用切片操作获得一个或多个子串:

aString = "Hello World!"
aString[0] ## H
aString[1:5] ## "ello"

更新字符串

我们知道,python中的字符串是不可变类型,所以我们不能对其子串进行修改:

aString[0] = '123' ## 抛出异常
aString[6:] = 'python' ## 抛出异常

虽然我们不能修改其子串,但是我们可以通过拼凑一个旧串的各部分来获得新串:

aString = aString[:6] + "python" ## hello python

字符串的切片操作

在前面我们简单地使用了切片操作,接下来我们详细了解。

  1. 用一个参数来调用切片操作符,返回一个单一字符:

     aString = "Hello"
     aString[0] ## 'H'
     aString[-2] ## 'l'
     aString[5] ## 抛出异常,索引越界
    
  2. 用一个数值范围([start:end)作为参数调用切片操作符,返回一串连续字符:

    我们可以访问到start(包括start在内)到end(不包括end)的子串。 start<=end,若等于,则没有元素

     aString[1:3] ## 'el'
     aString[2:5] ## 'llo' ,注意,这里5已经越界,但是并不报错
     aString[-3:-2] ## 'l'
    

    如果开始索引或者结束索引没有给定,则分别以字符串的第一个和最后一个索引值作为默认值:

     aString[2:] ##llo
     aString[:3] ##hel
     aString[:] ##hello
    

成员操作符(in, not in)

成员操作符用来判断一个字符或者字符串是否出现在另一个字符串中,存在则返回True,否则返回False:

'bc' in 'abcd' ## True
'aa' in 'abcd' ## False

连接符(+)

'Hello' + ' ' + 'World!' ## 'Hello World!'

重复操作符(*)

'Hello' * 2 ##'HelloHello'

格式化操作符(%)

举个例子:

who = "Mike"
print "I'm" + Mike + "!"

上面的实现方法虽然不是很麻烦,但当数据量大时,会繁琐。改良后的实现:

who = "Mike"
print "I'm %s!" % who

这就是所谓的格式化操作——将字符串进行有格式地输出。

常用的字符串格式化符号:

  1. %s 优先用str()函数进行字符串转换
  1. %d 输出有符号的十进制数

     print "%+d" % 10 ## +10
     print "%-d" % -10 ## -10
     print "%d" % 10 ## 10
    
  2. %f 输出浮点数

     "%f" % 1.2345 ##1.2345
     "%2f" % 1.2345 ##1.23 保留两位小数
    
  3. %%

     "we are at %d%%" % 100 ## we are at 100%
    

原始字符串操作符(r/R)

在原始字符串里,所有的字符都是直接按照字面的意思使用,没有转义或者不能打印的字符,如原始字符串中的\n不再代表换行,而只是表示字符串\n.

print r'a\nb' ##'a\nb'

raw_input()函数

该函数用来给定字符串提示用户输入字符串,并返回用户的输入。

>>> user_input = raw_input("Enter your name: ")
Enter your name: Mike
>>> print user_input
Mike

chr()和ord()函数

  • chr()函数用一个0~255内的整数作参数,返回一个对应的字符:
    chr(65) ## 'A'
    
  • ord()函数以一个长度为1的字符串作为参数,返回对应的ASCII码。

      ord('A')  ## 65
    

字符串类型常用的内建函数

PASS,用时查手册