Python 字符串操作详情

目录
  • 1、字符串的定义
  • 2、转义字符串和原始字符串
  • 4、字符串的运算
    • 4.1 拼接运算符
    • 4.2 成员运算
  • 5、获取字符串长度
  • 6、索引和切片
  • 7、字符串的方法
    • 7.1 转换大小写
    • 7.2 查找操作
    • 7.3性质判断
    • 7.4格式化字符串
  • 8、修剪操作

1、字符串的定义

所谓字符串,就是由0个或者多个字符组成的有限序列。

Python程序中,如果我们把单个或多个字符用单引号''或者双引号""包裹起来,就可以表示一个字符串,也可以用三个单引号或者双引号进行折行。字符串的字符可以是特殊符号、英文字母、中文字符、日文的平假名或片假名、希腊字母、Emoji字符等等。

如下代码展示了Python中的字符串:

text1 = "这是用双引号包裹的字符串"
text2 = '这是用单引号包裹的字符串'
text3 = """
这一个是那个三个引号包裹的字符串
可以保留原来的格式
"""

print(text1)
print(text2)
print(text3)

代码运行结果如下:

这是用双引号包裹的字符串
这是用单引号包裹的字符串

这一个是那个三个引号包裹的字符串
可以保留原来的格式

2、转义字符串和原始字符串

Python中使用反斜杠“”来表示转义,也就是说后面的内容就不会是原始的内容了,例如\n则表示换行,而不再表示和字符n了;所以如果字符串本身包含了 '、"、这些特殊的字符,必须要通过``进行转义处理。

示例代码如下所示:

text1 = "\'Hello world\'"  # 输出被单引号包裹的Hello world
text2 = '\\Hello world\\'  # 输出被两个反斜线包裹的Hello world

print(text1)
print(text2)

下面展示了python中的一些转义字符:

原始字符串是Python中一类比较特殊的字符串,以大写字母R或者小写字母r开始。在原始字符串中,字符“\” 不再表示转义字符的含义。

示例代码如下所示:

text1 = "古之立大事者,\n不惟有超世之才,\n亦必有坚忍不拔之志"
text2 = r"古之立大事者,\n不惟有超世之才,\n亦必有坚忍不拔之志"

print(text1)
print(text2)

运行代码如下所示:

古之立大事者,
不惟有超世之才,
亦必有坚忍不拔之志
古之立大事者,\n不惟有超世之才,\n亦必有坚忍不拔之志

4、字符串的运算

Python为字符串类型提供了非常多的运算符

4.1 拼接运算符

使用+运算符来实现字符串的拼接,使用*运算符来重复一个字符串的内容

text1 = "Hello,world"
text2 = "!"
print(text1 + text2)  # Hello,world!
print(text2 * 10)  # !!!!!!!!!!

用*实现字符串的重复是很重要,比如要打印一个分隔线如果写成---------------会很麻烦的,但是如果用- * 20就很简单了

4.2 成员运算

Python中可以用in和not in判断一个字符串中是否存在另外一个字符或字符串,innot in运算通常称为成员运算,会产生布尔值TrueFalse

text1 = "Hello,world"
text2 = "一碗周"
print("llo" in text1)  # True
print("周" not in text2)  # False
print("粥" not in text2)  # True

5、获取字符串长度

通过内置函数len()来获取字符的长度

text1 = "Hello,world"
text2 = "一碗周"
print(len(text1))  # 11
print(len(text2))  # 3

6、索引和切片

如果在字符串中引用某个字符,可以对字符从进行索引运算(注:Python的索引值是从0开始的),运算符是[n],其中n是一个整数,假设字符串的长度为N,那么n可以是从0到N-1的整数,其中0是字符串中第一个字符的索引,而N-1是字符串中最后一个字符的索引,通常称之为正向索引;在Python中,字符串的索引也可以是从-1到-N的整数,其中-1是最后一个字符的索引,而-N则是第一个字符的索引,通常称之为负向索引。

值得注意的是,因为字符串是不可变类型,所以不能通过索引运算修改字符串中的字符。

text1 = "Hello,world"
text2 = "一碗周"
N1 = len(text1)
N2 = len(text2)
# 获取第一个字符
print(text1[0], text1[-N1])  # H H
print(text2[0], text2[-N2])  # 一 一
# 获取最后一个字符
print(text1[N1 - 1], text1[-1])  # d d
print(text2[N2 - 1], text2[-1])  # 周 周
# 获取索引为2和-2的字符
print(text1[2], text1[-2])  # l l
print(text2[2], text2[-2])  # 周 碗

注意:如果索引越界(即索引值不在索引范围内)会引起错误,例如

print(text2[222])

错误信息如下:

IndexError: string index out of range # (字符串索引超出范围)

如果要取出多个字符,要对字符串进行切片,运算符是[i:j:k] ,其中i是开始索引,索引对应的字符可以不能取到N-1或者-1;j是结束索引,索引对应的字符不能取到0或者-N;k是步长,默认值为1,表示从前向后获取相邻字符的连续切片(可以省略),如果k的值为正数,即为正向索引;如果k的值为负数,即为负向索引。

s = '123456789abcdef,一碗周'
# i=3, j=6, k=1的正向切片操作
print(s[3:6])       # 456

# i=-17, j=-14, k=1的正向切片操作
print(s[-17:-14])     # 456

# i=16, j=默认, k=1的正向切片操作
print(s[16:])        # 一碗周

# i=-4, j=默认, k=1的正向切片操作
print(s[-3:])       # 一碗周

# i=8, j=默认, k=2的正向切片操作
print(s[8::2])      # 9bdf一周

# i=-12, j=默认, k=2的正向切片操作
print(s[-12::2])     # 8ace,碗

# i=默认, j=默认, k=2的正向切片操作
print(s[::2])       # 13579bdf一周

# i=默认, j=默认, k=1的正向切片
print(s[:])         # 123456789abcdef,一碗周

# i=1, j=-1, k=2的正向切片操作
print(s[1:-1:2])    # 2468ace,碗

print("-"*20)

# i=7, j=1, k=-1的负向切片操作
print(s[7:1:-1])    # 876543

# i=-13, j=-19, k=-1的负向切片操作
print(s[-13:-19:-1])  # 876543

# i=8, j=默认, k=-1的负向切片操作
print(s[8::-1])     # 987654321

# i=默认, j=1, k=-1的负向切片操作
print(s[:15:-1])     # 周碗一

# i=默认, j=默认, k=-1的负向切片
print(s[::-1])      # 周碗一,fedcba987654321

# i=默认, j=默认, k=-2的负向切片
print(s[::-2])      # 周一fdb97531

i的默认值为最开始的那个数,j的默认值为结束的那个数(包括本身)

值得注意的是,返回的字符串是包括i不包括j的。

7、字符串的方法

Python中使用字符串的类型自带的方法对字符串进行处理和操作,对于一个字符串类型的变量,使用变量名.方法名()的方式来调用它的方法。所谓方法其实就是跟某个类型的变量绑定的函数。

7.1 转换大小写

s1 = 'hello, world!'

# 使用capitalize方法获得字符串首字母大写后的字符串
print(s1.capitalize())   # Hello, world!
# 使用title方法获得字符串每个单词首字母大写后的字符串
print(s1.title())        # Hello, World!
# 使用upper方法获得字符串大写后的字符串
print(s1.upper())        # HELLO, WORLD!

s2 = 'GOODBYE'
# 使用lower方法获得字符串小写后的字符串
print(s2.lower())        # goodbye

7.2 查找操作

如果想在一个字符串中从前向后查找有没有另外一个字符串,可以使用字符串的findindex方法。

s = 'hello, world!'

# find方法从字符串中查找另一个字符串所在的位置
# 找到了返回字符串中另一个字符串首字符的索引
print(s.find('or'))        # 8
# 找不到返回-1
print(s.find('shit'))      # -1
# index方法与find方法类似
# 找到了返回字符串中另一个字符串首字符的索引
print(s.index('or'))       # 8
# 找不到引发异常
print(s.index('shit'))     # ValueError: substring not found

在使用findindex方法时还可以通过方法的参数来指定查找的范围,就是不必从索引0的位置开始。``find和index方法还有逆向查找(从后向前查找)的版本,分别是rfindrindex`

s = 'hello good world!'

# 从前向后查找字符o出现的位置(相当于第一次出现)
print(s.find('o'))       # 4
# 从索引为5的位置开始查找字符o出现的位置
print(s.find('o', 5))    # 7
# 从后向前查找字符o出现的位置(相当于最后一次出现)
print(s.rfind('o'))      # 12

7.3性质判断

可以通过字符串的startswithendswith来判断字符串是否以某个字符串开头和结尾;还可以用is开头的方法判断字符串的特征,这些方法都返回布尔值。

s1 = 'hello, world!'

# startwith方法检查字符串是否以指定的字符串开头返回布尔值
print(s1.startswith('He'))    # False
print(s1.startswith('hel'))   # True
# endswith方法检查字符串是否以指定的字符串结尾返回布尔值
print(s1.endswith('!'))       # True

s2 = 'abc123456'

# isdigit方法检查字符串是否由数字构成返回布尔值
print(s2.isdigit())    # False
# isalpha方法检查字符串是否以字母构成返回布尔值
print(s2.isalpha())    # False
# isalnum方法检查字符串是否以数字和字母构成返回布尔值
print(s2.isalnum())    # True

7.4格式化字符串

在Python中,字符串类型可以通过centerljustrjust方法做居中、左对齐和右对齐的处理。

s = 'hello, world'

# center方法以宽度20将字符串居中并在两侧填充*
print(s.center(20, '*'))  # ****hello, world****
# rjust方法以宽度20将字符串右对齐并在左侧填充空格
print(s.rjust(20))        #         hello, world
# ljust方法以宽度20将字符串左对齐并在右侧填充~
print(s.ljust(20, '~'))   # hello, world~~~~~~~~

Python2.6 开始,新增了一种格式化字符串的函数 str.format() ,它增强了字符串格式化的功能。

基本语法是通过 {}: 来代替以前的 %  。

a = 111
b = 222
print('{0} + {1} = {2}'.format(a, b, a + b)) # 111 + 222 = 333
c = "hello"
d = "world"
# 不设置指定位置,按默认顺序
print("{} {}".format(c, d))        # hello world
print("{0} {1}".format(c, d))      # hello world
print("{1} {0}".format(d, c))      # hello world
print("{1} {0} {1}".format(c, d))  # world hello world

Python 3.6开始,格式化字符串还有更为简洁的书写方式,就是在字符串前加上f来格式化字符串,在这种以f打头的字符串中,{变量名}是一个占位符,会被变量对应的值将其替换掉。

a = 111
b = 222
print(f"{a} + {b} = {a + b}") # 111 + 222 = 333
c = "hello"
d = "world"
print(f"{c} {d}")        # hello world

对数字格式化的多种操作

分别是居中、左对齐、右对齐,后面带宽度,:号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。

+表示在正数前显示+ ,负数前显示 - ; (空格)表示在正数前加空格 b、d、o、x 分别是二进制、十进制、八进制、十六进制。

8、修剪操作

strip() 方法用于移除原字符串修剪掉左右指定的字符(默认为空格或换行符)或字符序列。这个方法非常有实用价值,通常用来将用户输入中因为不小心键入的头尾空格去掉,strip方法还有lstrip(即left strip)和rstrip(即right strip)两个版本。

s = '   一碗周  \t\n'
# strip方法获得字符串修剪左右两侧空格之后的字符串
print(s.strip())    # 一碗周

s1 = "!!!一碗周!!!"
print(s1.lstrip("!"))  # 一碗周!!!
print(s1.rstrip("!"))  # !!!一碗周

到此这篇关于Python 字符串操作详情的文章就介绍到这了,更多相关Python 字符串操作内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python字符串常规操作大全

    拼接字符串 使用"+"运算符可完成对多个字符串的拼接,"+"运算符可以连接多个字符串并产生一个字符串对象. 字符串不允许直接与其他类型数据拼接. 如果要用来和其他类型拼接,先用str()函数转换成字符串类型. str1 = 'Hello World' str2 = '你好,世界' print(str1+str2) num = 2021 print(str1+str2+str(num)) 计算字符串长度 由于不同的字符所占字节数不同,所以要计算字符串长度,需先了解字符

  • python列表和字符串的三种逆序遍历操作

    列表的逆序遍历 a = [1,3,6,8,9] print("通过下标逆序遍历1:") for i in a[::-1]: print(i, end=" ") print("\n通过下标逆序遍历2:") for i in range(len(a)-1,-1,-1): print(a[i], end=" ") print("\n通过reversed逆序遍历:") for i in reversed(a): p

  • python如何正确的操作字符串

    目录 0x01 字符串(string) 引号转义 拼接字符串 长字符串 索引( indexing) 运算符in 创建列表 切片赋值 0x02 字符串格式化 模板字符串 字符串方法format 0x03 如何设置格式 字段名 转换标志 格式说明 0x04 字符串方法 常量 填充方法 split 0x01 字符串(string) 字符串是 Python 中最常用的数据类型,同时支持单引号和双引号.使用双引号时打印字符串时用单引号. >>> "Hello world!" '

  • Python如何利用%操作符格式化字符串详解

    目录 前言 1.字符串模板的参数 2.格式控制符 3.格式化操作符辅助符 总结 前言 Python的%操作符可用于格式化字符串,控制字符串的呈现格式. 使用%操作符格式化字符串的模板格式如下: %[( name )][ flags ][ width ].[ precision ] typecode 1.字符串模板的参数 name :可选参数,当需要格式化的值为字典类型时,用于指定字典的 key . flags :可选参数,可供选择的值如下: +:表示右对齐,正数前添加正号,负数前添加负号. -

  • Python 处理带有 \u 的字符串操作

    最近遇到一个头疼的问题,用socket接收到一个字符串 格式如下: {"trade_status": {"desc": "\u30106\u3011 - \u8d22\u52a1\u7ed3\u7b97\u5df2\u5b8c\u6210 "}}/end/ 其中含有一段含有\u的编码字串,怎么将其转化为汉字. decode().encode('utf-8') 不行,decode.encode半天搞不定,后来偶然发现,在decode时可以选则uni

  • Python字符串的15个基本操作(小结)

    1. 字符串的翻转 利用切片 str1 = "hello world!" print(str1[::-1]) 利用reduce函数实现 from functools import reduce str1 = "hello world!" print(reduce(lambda x, y : y+x, str1)) 2. 判断字符串是不是回文串 str1 = "123455" def fun(string): print("%s"

  • Python中字符串的基础介绍及常用操作总结

    目录 1.字符串的介绍 2.字符串的下标 3.字符串切片 4.字符串find()操作 5.字符串index()操作 6.字符串count()操作 7.字符串replace()操作 8.字符串split()操作 9.字符串startswith()操作 10.字符串endswith()操作 11.字符串upper()操作 12.字符串lower()操作 13.字符串title()操作 14.字符串capitalize()操作 15.字符串strip()操作 16.字符串rfind()操作 17.字符

  • 关于Python中字符串的各种操作

    目录 1.字符串拼接 2.字符串截取(字符串切片) 3.分割字符串 4.合并字符串 5.统计字符串出现的次数 6.检测字符串是否包含某子串 7.字符串对齐方法 8.检索字符串是否以指定字符串开头(startswith()) 9.检索字符串是否以指定字符串结尾(endswith()) 10.字符串大小写转换(3种)函数及用法 11.去除字符串中空格(删除特殊字符)的3种方法 12.encode()和decode()方法:字符串编码转换 13.序列化和反序列化 1.字符串拼接 通过+运算符 现有字符

  • Python数字/字符串补零操作实例代码

    有时候在使用 Python 的时候,想要对一个数字或者字符串进行补零操作,即把「1」变为一个八位数的「00000001」,这个时候可以使用一下方法来进行补零. 字符串补零: 可以使用 zfill() 函数来给字符串补零: >>> str = "123" >>> print(str.zfill(8)) 00000123 还能把整数转化成字符来使用 zfill() 补零: >>> num = 123 >>> print

  • python中字符串最常用的十三个处理操作记录

    前言 博主学习python有个几年了,对于python的掌握越来越深,很多时候,希望自己能掌握python越来越多的知识,但是,也意识很多时候熟练基础的东西,比了解更多的知识更重要. 今天,我们来讲讲python字符串处理 首先,我们先定义两个字符串,然后后面我们会对其进行一系列操作示范 str1="sadf AVD" str2="JIK dojfa kldfj" 1.把小写字母都转化为大写 print(str2.upper()) print(str1.upper(

随机推荐