Fork me on GitHub

Python基础—字符串(string)


环境及版本

1
2
3
Windows 10 x64
Python 2.7
Pycharm 4.5.1

字符串(string)

  • 字符串即使一串字符组成的序列

基本概念


引号和转义

  • 字符串中的单引号和双引号没有区别,可以混用
1
2
3
4
5
6
7
8
9
print "hello"
print 'hello'
print "'hello'"
print '"hello"'

hello
hello
'hello'
"hello"

转义

  • 当字符串中想要出现单引号、百分号、回车等符号时,需要进行转义
1
2
3
4
5
6
7
8
9
10
print "let\'s go"
print "100\\2=50"
print '\"hello\"'
print "this \nis"

let's go
100\2=50
"hello"
this
is

拼接字符串

  • 通常可以用加号来连接两个字符串
1
2
3
4
5
str1 = "100+"
str2 = "5=105"
print str1 + str2

100+5=105

长字符串

  • 如果需要跨多行的字符串,可以用’’’和”””来表示
1
2
3
4
5
6
7
8
9
10
11
12
13
print """1
2
3"""
print '''a
b
c'''

1
2
3
a
b
c

用这种方式可以进行多行注释


原始字符串

  • 原始字符串对于反斜杠不会转义
  • 原始字符串以r开头
  • 不能在原始字符串的末尾加反斜杠
1
2
3
print r"let\'s go"

let\'s go

Unicode字符串

  • python中普通字符串在内部是以8为的ASCII码储存,而Unicode字符串储存为16位Unicode字符
1
2
3
4
5
6
str3 = u'hello world'
print str3
print isinstance(str3, unicode)

hello world
True

字符串操作

  • 字符串操作和序列的操作基本相同,但字符串不能进行修改

字符串格式化


基础格式化

  • 基础格式化通常用百分号%来完成
  • 在字符串的左边放一个字符串,右侧是希望被格式化的值
  • 格式化字符串的%s部分称为转换说明符,它们标记了需要插入转换值的位置,s表示格式化为字符串,d表示格式化为整型,f表示格式化为浮点型
1
2
3
4
5
format_str = "My %s is %s"
values = ('name','wxmimperio')
print format_str % values

My name is wxmimperio

完整格式化

  • 格式化操作符的右侧可以是任意类型,如果是元组或者映射类型,那么字符串格式化将会有所不同。
  • 基本的转换说明符:
    • 1.%字符:表示格式化的开始
    • 2.转换标志:-表示左对齐,+表示在转换值之间加上正负号,””表示正数之前保留空格,0表示转换值若位数不够用0填充
    • 3.点.表示精度
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from math import pi
print "%d" % 10
print "%f" % 12.5
print "%s" % 'abc'
print "%10f" % pi
print "%10.2f" % pi
print "%.2f" % pi
print "%010.2f" % pi
print "%-10.2f" % pi
print "% d,% d" % (10,-20)
print "%+d,%+d" % (5,-30)

10
12.500000
abc
3.141593
3.14
3.14
0000003.14
3.14
10,-20
+5,-30

字符串方法


find方法

  • 可以在一个较长的字符串中查找子串,返回子串所在位置的最左索引,如果没找到返回-1
1
2
3
4
5
6
str4 = "My name is wxmimperio"
print str4.find("name")
print str4.find("we")

3
-1
  • 还可以由第二个、第三个参数指定索引范围,但不包括第二个索引位置
1
2
3
print str4.find('is',0,10)

8

join方法

  • 优雅的字符串连接方法,它是split方法的逆方法
  • 被连接的序列元素都必须是字符串
1
2
3
4
5
6
7
list1 = ['1','2','3','4','5','6']
print '+'.join(list1)
dict1 = {'a','b','c'}
print '&'.join(dict1)

1+2+3+4+5+6
a&c&b

lower、upper、title方法

  • lower将字符串全部变成小写字母后返回
  • upper将字符串全部变成大写字母后返回
  • title将字符串全部变成起始字母大写后返回
1
2
3
4
5
6
7
8
str5 = "ABCD EFG"
print str5.lower()
print str5.lower().upper()
print str5.title()

abcd efg
ABCD EFG
Abcd Efg

replace方法

  • 将某个字符串被匹配项替换后,返回替换后字符串
1
2
3
print str5.replace('A','12345')

12345BCD EFG

split方法

  • 用来将字符串分割成序列,是join的逆方法
1
2
3
4
str6 = "a+b+-c+d+e-f+g"
print str6.split("+")

['a', 'b', '-c', 'd', 'e-f', 'g']

strip方法

  • 去除两侧的空格,但不去除内侧的空格
1
2
3
4
str7 = "    1 2 3 4 5    "
print str7.strip()

1 2 3 4 5

translate方法

  • 用于同时进行多个字符串的替换
1
2
3
4
5
6
from string import maketrans
table = maketrans('abc','123')
str8 = 'abc'
print str8.translate(table)

123

参考:Python基础教程(第2版·修订版)


转载请注明出处


Thank you for your support.