记录博客 ZH-BLOG

Python 字符串操作

时间:2018-07-16 17:47:13分类:python

双引号

字符串可以用双引号开始和结束,就像用单引号一样。使用双引号的一个好处,就是字符串中可以使用单引号字符。

>>> "my name's Joe"
"my name's Joe"

转义字符

>>> name='my name\'\nhoe'
>>> print(name)
my name'
hoe
>>> print('my\tname')
my	name

原始字符串

>>> print(r'my\tname')
my\tname

用三重引号的多行字符串

三重引号之间的所有引号、 制表符或换行, 都会转化成字符的一部分,然后原样输出。

>>> print('''my\nname\ttome''')
my
name	tome
>>> print('''my name'
	is tome my age
	\t10''')
my name'
	is tome my age
		10
>>> print('''
my name

is tome
my age

\t10''')

my name

is tome
my age

	10

多行注释

井号字符(#) 表示这一行是注释, ''' 表示多行字符串注释。

'''多行
	注释
		'''

def zs():
	'''单行注释'''
	print('hw')

zs()

hw

字符串下标和切片

字符串像列表一样,使用下标和切片。

>>> name='abcdefghijkmn'
>>> name[0]
'a'
>>> name[-1]
'n'
>>> name[1:3]
'bc'
>>> name[12:-1]
''
>>> name[12:]
'n'

字符串的 in 和 not in 操作符

像列表一样, in 和 not in 操作符也可以用于字符串。

字符串方法 upper()、 lower()、 isupper()和 islower()

upper():转大写

lower():转小写

isupper():字符串至少有一个字母, 并且所有字母都是大写

islower():字符串至少有一个字母, 并且所有字母都是小写

>>> name='abc'
>>> name.upper()
'ABC'
>>> name=name.lower()
>>> name
'abc'
>>> name.isupper()
False
>>> name.islower()
True
>>> 'aBc'.isupper()
False
>>> 'aBc'.islower()
False
>>> 'abc123'.isupper()
False
>>> 'abc123'.islower()
True
>>> '123'.islower()
False
>>> '123'.isupper()
False

isX 字符串方法

isalpha():字符串只包含字母, 并且非空返回 True

isalnum():字符串中只包含字母数字,并且非空返回 True

isdecimal():如果字符串只包含数字字符,并且非空返回 True

isspace():字符串只包含空格、制表符和换行,并且非空返回 True

istitle():字符串中单词以大写字母开头、后面都是小写字母返回 True

>>> name='abc123'
>>> name.isalpha()
False
>>> 'a'.isalpha()
True

>>> name.isalnum()
True
>>> '123'.isalnum()
True
>>> 'abc'.isalnum()
True

>>> name.isdecimal()
False
>>> '123'.isdecimal()
True

>>> ''.isspace()
False
>>> ' '.isspace()
True
>>> '	'.isspace()
True
>>> '\t'.isspace()
True
>>> '\t\n'.isspace()
True

>>> 'True'.istitle()
True
>>> 'abc'.istitle()
False
>>> 'AbcG'.istitle()
False
>>> '123'.istitle()
False
>>> 'A123'.istitle()
True
>>> 'A 123'.istitle()
True
>>> 'A 123 Bing'.istitle()
True

例子:检验输入信息

## 验证
def cnum():
	while True:
		print('请输入你年龄:')
		age=input()
		if age.isdecimal():
			break
		print('年龄必须是一个数字!重新输入...')

def cpwd():
	while True:
		print('请输入密码:')
		pwd=input()
		if pwd.isalnum() and len(pwd)>8:
			break
		print('密码必须字母数字长度在8以上...')

cnum()
cpwd()

字符串方法 startswith()和 endswith()

判断字符串是否以传入的字符串开始或结束。

字符串方法 join()和 split()

join() 将一个字符串列表用给定的连接符连接成一个字符串并返回;split() 以给定的分割符分割成一个列表并返回。

>>> '-'.join(['cats','dog','bats'])
'cats-dog-bats'
>>> ' | '.join(['blue','green','red'])
'blue | green | red'
>>> name=' - '.join(['a','b','c'])
>>> name
'a - b - c'
>>> name.split('-')
['a ', ' b ', ' c']
>>> name='''
	abc
	efg

	wer
	'''
>>> name.split('\n')
['', '\tabc', '\tefg', '', '\twer', '\t']

用 rjust()、 ljust()和 center()方法对齐文本

rjust()和 ljust()、center() 字符串方法返回调用它们的字符串的填充版本, 默认通过插入空格来对齐文本。

>>> name='abc'
>>> name.rjust(6)
'   abc'
>>> name.rjust(8)
'     abc'
>>> name.ljust(6)
'abc   '
>>> name.ljust(6,'*')
'abc***'
>>> name.ljust(2,'*')
'abc'
>>> name.center(5,'*')
'*abc*'
>>> name.center(4,'*')
'abc*'
>>> name.center(6,'*')
'*abc**'

例子:对齐打印条目

##打印价格表
def printPrice(dic,lwidth,rwidth):
	print('价格明细'.center(lwidth+rwidth,'-'))
	for k,v in dic.items():
		print(k.ljust(lwidth,'-')+v.rjust(rwidth,'-'))

items={'pg':'4/kg','hmg':'1/kg','xjxj':'3/kg','mt':'6/kg'}
printPrice(items,16,8)

----------价格明细----------
pg------------------4/kg
hmg-----------------1/kg
xjxj----------------3/kg
mt------------------6/kg

用 strip()、 rstrip()和 lstrip()删除空白字符

删除字符串左边、 右边或两边的空白字符(空格、制表符和换行)。strip()字符串方法将返回一个新的字符串, 它的开头或末尾都没有空白字符。lstrip()和 rstrip()方法将相应删除左边或右边的空白字符。

>>> name=' joe '
>>> name.strip()
'joe'
>>> name.rstrip()
' joe'
>>> name.lstrip()
'joe '