最近有一段时间没写博客了,今天突然心血来潮码一篇,本篇文章我将介绍关于python中字符串的一些重要用法。说起字符串,可以说是程序猿经常要打交道的东西了,而python刚好是一门有着强大字符串处理方法语言,闲话不多说了,直接上硬菜!
初窥面容
在python中字符串有三种形式:
- 包含在单引号’中
- 包含在双引号"中
- 包含在三引号"""中
话不多说,直接上代码
//单引号形式
str1 = '我是一个字符串'
//双引号形式
str2 = "我也是一个字符串"
//三引号形式
str3 = """我
还是一个
字符串
"""
需要注意的是,在字符串中,若包含了转义字符,但实际并不想让它发挥转义字符的作用,可以在字符串前面加上一个r使其不发生转义,示例:
str1 = '我是一个字符串\n'
str2 = r'我是一个字符串\n'
print(str1)
print(str2)
'''输出结果为:
我是一个字符串
我是一个字符串\n
'''
另外,需要强调一点,字符串是不可变的数据类型!!!即不存在类似下面代码示例的用法
str1 = '我是一个字符串'
str1[0] = 'w'
#会报错为:TypeError: 'str' object does not support item assignment
字符串的索引和切片
索引
字符串的庐山真面目已经知晓了,但作为一个程序猿一般都会想到如何能够将字符串中的单个字符取出,这就是字符串的索引,和python中的列表一样,字符串同样有两种索引方式:
- 从左往右从0开始索引
- 从右往左从-1开始索引
这里同样举个栗子:
注意,在索引字符串的时候不要越界了,否则会报错为IndexError: string index out of range。
切片
首先先介绍切片操作的语法:[start:stop:step]
,其中:
- start为切片操作的起点;
- stop为切片操作的终点;
- step表示截取步长,即截取一个数据后需要加上该步长进行下一次截取,它是一个可选参数,若未指定,则默认为1,即连续截取。
在这里想要强调的是,切片操作的索引范围为[start,stop),即左开右闭!!!
str1 = '我是一个字符串'
#最完整的语法形式
print(str1[1:4:2])
'''
是个
'''
#缺省step(常规用法)
print(str1[2:5])
'''
一个字
'''
#省略start,stop
print(str1[::2])
'''
我一字串
'''
#省略stop
print(str1[2:])
'''
一个字符串
'''
#省略start
print(str1[:6])
'''
我是一个字符
'''
#获取一个字符串的逆序串
print(str1[::-1])
'''
串符字个一是我
'''
字符串常用运算符
符号 | 作用 |
---|---|
+ | 字符串连接 |
* | 字符串重复 |
in/not in | 判断某个字符是否包含/不包含在某个字符串中,是则返回True |
这些运算符对应代码示例为:
str1 = '我是一个字符串'
str2 = '我也是一个字符串'
print(str1 + str2)
print(str1*3)
print('串' in str1)
print('也' not in str1)
'''
我是一个字符串我也是一个字符串
我是一个字符串我是一个字符串我是一个字符串
True
True
'''
强大的字符串函数
len(string)
功能:获取字符串的串长
print(len('I love python'))
'''
13
'''
string.find(substr,begin,end)
功能:在字符串string中获取子串substr的位置,若不存在则返回-1,其中begin,end为在string中查找的索引范围,这两个都是可选参数。
str1 = '我是一个字符串 I love python'
print(str1.find('字符串'))
print(str1.find('字符串',7,20))
print(str1.find('Java'))
'''
4
-1
-1
'''
string.count(substr,start,end)
功能:在字符串中查找子字符串str出现的次数,其中start,end的作用是限定查找的范围。
str1 = 'I love python, and I also love C++'
print(str1.count('I'))
print(str1.count('I',2))
print(str1.count('Java'))
'''
2
1
0
'''
string.lower()/string.upper()
功能:将字符串中的大写字母转换成小写字母/将字符中的小写字母转换为大写字母。
str1 = 'I love python, and I also love C++'
print(str1.lower())
print(str1.upper())
'''
i love python, and i also love c++
I LOVE PYTHON, AND I ALSO LOVE C++
'''
string.replace(old,new,count)
功能:将字符串中的旧字符串old替换为新字符串new,其中count参数表示替换的次数,是一个可选参数,当缺省时表示全部替换。
str1 = 'I love python, and I also love C++'
print(str1.replace('o','&',2))
print(str1.replace('o','&'))
'''
I l&ve pyth&n, and I also love C++
I l&ve pyth&n, and I als& l&ve C++
'''
string.join(iterable)
功能:返回一个以string为分隔符,由iterable(可迭代对象)中的元素组成的字符串。
lst = ['I','love','python']
#以空格作为分隔符
print(' '.join(lst))
'''
I love python
'''
alpha = ['a','b','c','d','e','fghijklmnopqrstuvwxyz']
#使用空字符做为分隔符,可以将列表中的左右字符串连接起来
print(''.join(alpha))
'''
abcdefghijklmnopqrstuvwxyz
'''
string.isalpha()/string.isdigit()
功能:检测字符串是否只由字母/数字组成。
str1 = "Hello everyone, I am a programmer"
str2 = 'python'
print(str1.isalpha(),str2.isalpha())
'''
False True
'''
str3 = '237843249234'
str4 = '192:168:1:1'
print(str3.isdigit(),str4.isdigit())
'''
True False
'''
string.split(sep,maxsplit)
功能:利用分割符sep,将字符串进行分隔开来,返回分割串组成的列表,其中maxsplit表示最大分割次数,该参数是可以缺省的,缺省则为全部分割。
str1 = 'python C C++ Java C# html JS GO'
#只分割三次
print(str1.split(' ',3))
#全分割
print(str1.split(' '))
'''
['python', 'C', 'C++', 'Java C# html JS GO']
['python', 'C', 'C++', 'Java', 'C#', 'html', 'JS', 'GO']
'''
string.endwith(suffix)
功能:检测字符串string是否以字符串suffix为结尾。
str1 = 'abcdefgaabbcdebbacgfedcbaabcdefga'
#寻找最长的相等公共前后缀
for l in reversed(range(len(str1))):
if str1.endswith(str1[:l]):
print(str1[:l])
break
'''
abcdefga
'''
ord(ch)/chr(ch)
功能:ord函数可以返回一个字母的ASCII码来进行算术运算,而chr可以把在0~255之间的整数转换为对应的字符。
注:python不能直接用整数和字符进行加减运算,即类似'a' - 65
这种用来是不可行的,而ord()/chr()就可以用来解决这个问题。
#获取字母A的ASCII码和ASCII码为65对应的字符
print(ord('A'),chr(65))
#获取字母'a'的ASCII码进行减法运算
print(ord('a') - 65)
'''
65 A
32
'''
string.title()
功能:将字符串中的每个单词首字母大写。
str1 = 'computer science and technology'
print(str1.title())
'''
Computer Science And Technology
'''
结语
字符串的用法远远不止这么多,但上面的很多函数在日常处理中十分有用,希望看完这篇文章后能够帮助你更加走近字符串!!!要是觉得还可以就点个赞吧,你们的支持是博主码文的不竭动力。
转载:https://blog.csdn.net/qq_42103091/article/details/105520726