字符串是每个编程语言必备的数据类型,人们的办公无非就是对文字、数字、图片、视频等的处理,其中文字的处理更是不胜枚举,下面我们来看看python的字符串
创建一个字符串
通常,人在听说一个尚不存在的新事物时,都会根据自己以往的经验“虚构”一个自己认为最相似的事物,这或许就是“期望”。在软件工程这一行,我们不可能指望在客户看到实际的软件前说出他们想要的软件,这太难了,于是我们会做一个原型,呈现在客户面前,客户再根据原型提出自己的期望。要想了解一个东西,实际接触是非常好的一种方法。
python字符串的创建很简单,只需要一次“赋值”即可,就像下面这样
>>> my_str = "my first string"
>>> my_str
'my first string'
>>>
当执行第一行的操作时,会创建一个字符串对象"my first string",创建一个引用my_str指向字符串对象"my first string"。就这样,我们得到了一个实际的字符串。
使用字符串
获得一个东西不是最终目的,获得的东西如果不去创造价值,那就一文不值。下面我们来说说字符串的使用。
判断字符串的类型
- 判断一个字符串是否数字,比较简单粗暴,只要字符串中包含[0-9]之外的字符就返回False
>>> "123".isdigit() True >>> "-12".isdigit() False >>> "0002".isdigit() True >>>
- 判断字符串是否只包含字母和数字
>>> "0x12".isalnum() True >>> "12".isalnum() True >>> "acs".isalnum() True >>> ".".isalnum() False >>>
- 判断字符串是否只包含字母
>>> "123".isalpha() False >>> "0x12".isalpha() False >>> "abc".isalpha() True >>>
- 判断字符串是否全部大/小写,字符串中的字符全部大写,且至少有一个可以大写的字符被大写了,小写是islower,使用方法类似
>>> "Abc".isupper() False >>> "ABC".isupper() True >>> "AB23".isupper() True >>> "Ab23".isupper() False >>> "AB-23".isupper() True >>>
- 判断字符串是否空白符
>>> " ".isspace() True >>> " ".isspace()
- 还有其他的一些不大常用的方法就不一一讲了,主要还有:istitle
让字符串“列队”
字符串的输出无疑是计算机软件与用户交互很重要的一种途径,那么整齐的输出格式就变得尤为重要了,下面来看看如何让我们的字符串更整齐和规范化。
- 保证字符串宽度ljust/rjust,S.ljust(width[, fillchar]) -> string
>>> "abc".ljust(5,"_") 'abc__' >>> "abc".rjust(5,"_") '__abc' >>>
- 0填充,S.zfill(width) -> string
>>> "126".zfill(6) '000126' >>> "126".zfill(5) '00126' >>>
- 将一个可迭代对象的没个元素用相同的字符串分割
>>> a = ["james",'moore','an'] >>> ":".join(a) 'james:moore:an' >>>
查找和替换
对于字符串的处理,不可避免特定子字符串的查找和替换,下面我们就来看看字符串的查找和替换。
- 在字符串中查找子串,S.rfind(sub [,start [,end]]) -> int或者S.find(sub [,start [,end]]) -> int,前者是从前往后找,后者从后往前找,直到找到子串,返回子串的其实下标(以0为起始)
>>> "abcdefabcave".find('a',0,10) 0 >>> "abcdefabcave".rfind('a',0,10) 9 >>>
- 统计子串出现的次数
>>> "abcdefabcave".count('a',0,12) 3 >>> "abcdefabcave".count('ab',0,12) 2 >>>
- 子串的下标,S.index(sub [,start [,end]]) -> int或者S.rindex(sub [,start [,end]]) -> int,查找子串第一次出现的下标
>>> "abcdefabcave".index('ab',0,12) 0 >>> "abcdefabcave".rindex('ab',0,12) 6 >>>
- 替换,S.replace(old, new[, count]) -> string,将old子串替换成new子串,返回替换后的字符串
>>> "I am Jim,26 years old,Jim Jim jim".replace('Jim','James') 'I am James,26 years old,James James jim' >>> "I am Jim,26 years old,Jim Jim jim".replace('Jim','James',1) 'I am James,26 years old,Jim Jim jim' >>> "I am Jim,26 years old,Jim Jim jim".replace('Jim','James',2) 'I am James,26 years old,James Jim jim' >>> "I am Jim,26 years old,Jim Jim jim".replace('Jim','James',3) 'I am James,26 years old,James James jim' >>> "I am Jim,26 years old,Jim Jim jim".replace('Jim','James',100) 'I am James,26 years old,James James jim' >>>
- 按给定的子串分割,S.split([sep [,maxsplit]]) -> list of strings,sep为分割的子串,maxsplit为最大分割次数,不指定为全部分割。
>>> my_str = 'name:an;name:moore;name:larry' >>> my_str.split(';',1) ['name:an', 'name:moore;name:larry'] >>> my_str.split(';',2) ['name:an', 'name:moore', 'name:larry'] >>> my_str.split(';',3) ['name:an', 'name:moore', 'name:larry'] >>> my_str.split(';') ['name:an', 'name:moore', 'name:larry'] >>>
字符串的高级应用
关于字符串的高级应用就不在这里讲述了,如果需要了解,可以参考下面的文章: