Python中的字符串操作方法汇总-总结(大约50种操作方法),附示例代码

本文详述了Python中字符串的各种操作,包括大小写转换、查找、替换、两端处理、测试函数、连接与重复、切片、原始化、多行表示、Unicode编码解码、字符串格式化、序列连接、字符映射转换、拆分、判断前后缀、制表符转换、分割方法及更多实用技巧。适合日常文本处理和办公自动化场景。
部署运行你感兴趣的模型镜像

用Python做算法,对字符串的操作用到的不多。
但是用Python来处理日常生活、工作中的许多问题,比如文本处理,办公自动化等就常常要用到字符串的操作了。
所以,有必要把Python中的字符串操作方法总结一下。

声明:博主(昊虹图像算法)写这篇博文时,用的Python的版本号为3.9.10。

在Pyton3中,字符串对象的类名为“str”。

目录

01-字符串大小写转换

  • S.lower()—字母大写转换成小写。
  • S.casefold()–返回一个只含小写的字符串,和S.lower()的功能基本一样。
  • S.upper()—字母小写转换成大写。
  • S.swapcase()—字母大写转换小写,小写转换成大写。
  • S.title()—将首字母大写。函数capitalize()也可实现这个功能。

示例代码如下:

# 字母大写转换成小写
s1 = 'SUWENHAO andg WangHong'
s2_1 = s1.lower()
s2_2 = s1.casefold()

# 字母小写转换成大写
s3 = 'wanghong'
s4 = s3.upper()

# 字母大写转换小写,小写转换成大写
s5 = 'SuWenHao'
s6 = s5.swapcase()

# 将每一个单中大写和首字母大写
s7 = 'andy is a boy'
s8_1 = s7.title()  # 每一个单词都大写
s8_2 = s7.capitalize()  # 只大写第一个单词

运行结果如下:
在这里插入图片描述

02-用函数find()和index()实现字符串搜索(查找)

S.find(substr,[start,[end]])—返回S中出现substr的第一个字母的标号,如果S中没有substr则返回-1,start和end作用就相当于在S[start:end]中搜索。
示例代码如下:

s1 = 'i love zi heng and zi man'
zi_index = s1.find('zi')

运行结果如下:
在这里插入图片描述
从上面的结果我们可以看出,位置索引是从0开始的。

如果想得到字符串substr出现的最后位置,可以用函数rfind()实现。

函数index()跟find()方法一样,只不过如果substr不在 string中会报出一个异常,其示例代码如下:

str.index(str, beg=0, end=len(string))
s1 = 'i love zi heng and zi man'
zi_index = s1.index('zi')
ci_index = s1.index('ci')

在这里插入图片描述
在这里插入图片描述
同样,如果想得到字符串substr出现的最后位置,可以用函数rindex()实现。

02-附1 用“in”运算符判断某个字符串是不是在另一个字符串中

示例代码如下:

s1 = 'i love zi heng and zi man'
zi_bool = 'zi' in s1
hong_bool = 'hong' in s1

运行结果如下:
在这里插入图片描述

02-附2 用“not in”运算符判断某个字符串是不是不在另一个字符串中

示例代码如下:

s1 = 'i love zi heng and zi man'
zi_bool = 'zi' not in s1
hong_bool = 'hong' not in s1

运行结果如下:
在这里插入图片描述

02-附3 字符串出现次数统计

str.count(sub, start= 0,end=len(string))

sub – 搜索的子字符串
start – 字符串开始搜索的位置。默认为第一个字符,第一个字符索引值为0。
end – 字符串中结束搜索的位置。字符中第一个字符的索引为 0。默认为字符串的最后一个位置。

示例代码如下:

s1 = 'i love zi heng and zi man'
zi_count = s1.count('zi')

运行结果如下:
在这里插入图片描述
分析:字符串“zi”在s1中出现了两次,所以结果为2。

02-附4 返回字符串 str 中最大的字母

str.max(str)

02-附5 返回字符串 str 中最小的字母

str.min(str)

03-字符串替换

S.replace(oldstr,newstr,[count])—把S中的oldstar替换为newstr,count为最多做多少次替换次数,count的默认值为-1,代表替换所有。
示例代码如下:

s1 = 'i love zi heng and zi man'
s2 = s1.replace('zi', 'su zi', 1)  # 最多替换一次
s3 = s1.replace('zi', 'su zi', 2)  # 最多替换两次
s4 = s1.replace('zi', 'su zi')  # 替换所有

运行结果如下:
在这里插入图片描述

04-字符串左右两端处理

S.strip([chars])—把S左右两端chars中有的字符全部去掉,一般用于去除空格。
S.lstrip([chars])—把S左端chars中所有的字符全部去掉。
S.rstrip([chars])—把S右端chars中所有的字符全部去掉。
示例代码如下:

s1 = '00000003210Runoob01230000000'
s2_both = s1.strip('0')  # 去除首尾字符"0"
s2_left = s1.lstrip('0')  # 去除左端的字符"0"
s2_right = s1.rstrip('0')  # 去除右端的字符"0"

s3 = '  Runoob      '
s4_both = s3.strip(' ')  # 去除首尾空格
s4_left = s3.lstrip(' ')  # 去除左端空格
s4_right = s3.rstrip(' ')  # 去除右端空格

运行结果如下:
在这里插入图片描述

05-字符串测试(特征判断),比如是否全为字母,全为数字等12个函数

  • string.isalnum()—如果 string 至少有一个字符并且所有字符都是字母或数字则返回True,否则返回 False。
  • string.isalpha()—如果 string 至少有一个字符并且所有字符都是字母则返回 True,否则返回 False。
  • string.isdecimal()—如果 string 只包含十进制数字则返回 True 否则返回 False。
  • string.isdigit()—如果 string 只包含数字则返回 True 否则返回 Fals。
  • string.islower()—如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回False。
  • string.isupper()—如果 string 中包含至少一个需要区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False。
  • string.isnumeric()—如果 string 中只包含数字字符,则返回 True,否则返回 False。
  • string.isspace()—如果 string 中只包含空格,则返回 True,否则返回 False。
  • string.istitle()—如果 string 是标题化的(即每一个字母是否大写)则返回 True,否则返回 False。
  • stringisasciir()—如果字符串为空或字符串中的所有字符都位于 ASCII码的码位上,则返回 True,否则返回 False。详情见博文https://blog.youkuaiyun.com/qq_41961087/article/details/107703076
  • string.isidentifier()—如果字符串是有效标识符,则 isidentifier() 方法返回 True,否则返回 False。什么叫有效标识符?如果字符串仅包含字母数字字母(a-z)和(0-9)或下划线(_),则该字符串被视为有效标识符。有效的标识符不能以数字开头或包含任何空格。
  • string.isprintable()—如果所有字符都是可打印的,则 isprintable() 方法返回 True,否则返回 False。至于哪些字符是可打印的,哪些字符是不可打印的,大家上网查一下就是了,比如这个网页 https://wenku.baidu.com/view/7ea94addf9b069dc5022aaea998fcc22bcd143bf.html,注意回车和换行符都是不可打印的。

这些操作的示例代码就暂不上了。

06-用“+”运行符实现字符串连接

示例代码如下:

str1 = 'hello suwenhao'
str2 = str1[:6] + 'wang hong!'

print("输出 :", str2, 'Nice to meet you!')

上面代码中的str2是由字符串str1[:6] 和字符串 ‘wang hong!’ 连接起来的。
字符串str1[:6]是截取str1的第0到5个,即前6个。
运行结果如下:
在这里插入图片描述
在这里插入图片描述

07-用“*”运算符实现字符串重复

示例代码如下:

str1 = 'abc'
str2 = str1*3

运行结果如下:
在这里插入图片描述

08-字符串切片操作

示例代码如下:

str1 = 'abcdef'
str2 = str1[:3]

运行结果如下:
在这里插入图片描述

09-字符串原始化(按字符本义使用,不存在转义等)

print(r'i love you \n\r')
print(R'i hate you \n\r')

运行结果如下:
在这里插入图片描述
从上面的代码和结果来看,在字符串前加小写的r和大写的R都可以实现这个效果。

10-字符串太长要越多行怎么办(用三引号)

示例代码如下:

hi = '''hi 
there'''
print(hi)

运行结果如下:
在这里插入图片描述
在这里插入图片描述
三引号让程序员从引号和特殊字符串的泥潭里面解脱出来,自始至终保持一小块字符串的格式是所谓的WYSIWYG(所见即所得)格式的。
一个典型的用例是,当你需要一块HTML或者SQL时,这时当用三引号标记,使用传统的转义字符体系将十分费神。

11-怎么样将字符串以Unicode码进行编码

Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。
Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。
它将世界上所有的文字用2个字节统一进行编码。Unicode用数字0-0x10FFFF来映射这些字符,最多可以容纳1114112个字符,或者说有1114112个码位。

python2.x默认的字符编码是ASCII,默认的文件遍码也是ASCII.
python 3.x默认的字符编码是unicode,默认的文件编码是utf-8。

所以,其实将字符串以Unicode码进行编码主要是针对python2.x。

具体来说,在Python中可按下面这样定义一个字符串由Unicode码进行编码。
示例代码如下:

str1 = u'Hello World !'

引号前小写的"u"表示这里创建的是一个 Unicode 字符串。如果你想加入一个特殊字符,可以使用 Python 的 Unicode-Escape 编码。如下例所示:

str1 = u'Hello\u0020World !'
print(str1)

运行结果如下所示:
在这里插入图片描述
被替换的 \u0020 标识表示在给定位置插入编码值为 0x0020 的 Unicode 字符(空格符)。

12-字符串的编码和解码

编码:

str.encode(encoding='UTF-8',errors='strict')

encoding – 把字符串用什么码进行编码,如UTF-8、gb2312、gbk、 big5…等
errors – 设置不同错误的处理方案。默认为 ‘strict’,意为编码错误引起一个UnicodeError。 其他可能得值有 ‘ignore’, ‘replace’, ‘xmlcharrefreplace’, ‘backslashreplace’ 以及通过 codecs.register_error() 注册的任何值。

解码:

str.decode(encoding='UTF-8',errors='strict')

encoding – 原来的字符串是什么码进行编码的,如UTF-8、gb2312、gbk、 big5…等
errors – 设置不同错误的处理方案。默认为 ‘strict’,意为编码错误引起一个UnicodeError。 其他可能得值有 ‘ignore’, ‘replace’, ‘xmlcharrefreplace’, ‘backslashreplace’ 以及通过 codecs.register_error() 注册的任何值。
注意:函数decode是把字符串解码成unicode编码,而不是encoding代表的编码,参数encoding只是告诉函数我原来的编码是什么。

上面两个函数使用示例如下:

str1 = 'this is string example'
str2 = str1.encode('big5', 'strict')
str3 = str2.decode('big5', 'strict')  # 将big5解码成unicode编码

运行结果如下:
在这里插入图片描述

13-1-利用函数center()将字符串居中并将多余的空位以指定字符填充

str.center(width[, fillchar])

示例:

str1 = 'haohong'
str2 = str1.center(20, '*')
print(str2)

运行结果如下:
在这里插入图片描述

13-2-使用函数ljust()将原字符串左对齐,并使用指定字符填充至指定长度

ljust() 方法返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串。

str.ljust(width[, fillchar])

width – 指定字符串长度。
fillchar – 填充字符,默认为空格。
使用示例如下:

str1 = "i love my city"
print(str1.ljust(30, '#'))

运行结果如下:
在这里插入图片描述

13-3-使用函数rjust()将原字符串右对齐,并使用指定字符填充至指定长度

rjust() 方法返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串。如果指定的长度小于原字符串的长度则返回原字符串。

str.rjust(width[, fillchar])

width – 指定字符串长度。
fillchar – 填充字符,默认为空格。
使用示例如下:

str1 = "i love my city"
print(str1.rjust(30, '#'))

运行结果如下:
在这里插入图片描述

13-3-附1-使用函数zfill()将原字符串右对齐,并使用0填充至指定长度

原型如下:

str.zfill(width)

示例代码如下:

str1 = "i love my city"
print(str1.zfill(30))

运行结果如下:
在这里插入图片描述

14-1 用函数endswith()判断字符串是否以某个后缀结尾

str.endswith(suffix[, start[, end]])

suffix – 该参数可以是一个字符串或者是一个元素。
start – 字符串中的开始位置。
end – 字符中结束位置。
如果字符串含有指定的后缀返回True,否则返回False。
示例代码如下:

str1 = 'this is string example'
str2 = 'example'
str3 = 'fuck'
end_bool1 = str1.endswith(str2)
end_bool2 = str1.endswith(str3)

运行结果如下:
在这里插入图片描述

14-2 用函数removesuffix()去除字符串的指定后缀

注意:成员函数removesuffix()是Python3.9中新增的。
示例代码如下:

str1 = 'TestHook'
str2 = str1.removesuffix('Hook')

运行结果如下:
在这里插入图片描述

14-3 用函数startswith()判断字符串是否以某个前缀开始

str.startswith(str, beg=0,end=len(string));

str – 检测的字符串。
strbeg – 可选参数用于设置字符串检测的起始位置。
strend – 可选参数用于设置字符串检测的结束位置。
如果检测到字符串则返回True,否则返回False。
示例代码如下:

str1 = 'this is string example'
str2 = 'thi'
str3 = 'fuck'
end_bool1 = str1.startswith(str2)
end_bool2 = str1.startswith(str3)

运行结果如下:
在这里插入图片描述

14-4-用函数removeprefix()去除字符串的指定前缀

注意:成员函数removeprefix()是Python3.9中新增的。
示例代码如下:

str1 = 'TestHook'
str2 = str1.removeprefix('Test')

运行结果如下:
在这里插入图片描述

15-用函数expandtabs()将字符串中的tab符号(制表符)转为空格

string.expandtabs(tabsize=8)

把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8。
示例代码如下:

str1 = 'AAA\tBBB'  # \t代表制表符
str2 = str1.expandtabs(tabsize=8)

print(str1)
print(str2)

运行结果如下:
在这里插入图片描述

16-1-利用string.format()格式化字符串

这个的详细情况和使用示例见博文 https://blog.youkuaiyun.com/wenhao_ir/article/details/125390532

16-2-利用string.format_map()格式化字符串

这种格式化字符串的方法通常与字典结合使用,字典本质上就是一个键与值的映身(map)嘛。
示例代码如下:

my_dict = {'name': 'SWH', 'job_title': 'Software Engineer'}

print('My name is {name} and I am a {job_title}'.format_map(my_dict))

运行结果如下:
在这里插入图片描述
当然上面的代码也可写成下面这样:

my_dict = {'name': 'SWH', 'job_title': 'Software Engineer'}
str1 = 'My name is {name} and I am a {job_title}'.format_map(my_dict)
print(str1)

17-使用函数join()将序列(list)中的元素以指定的字符连接生成一个新的字符串(可利用它将元组或列表转换为字符串)

示例代码如下:

str1 = "-"
seq = ("a", "b", "c")  # 字符串序列
print(str1.join(seq))

运行结果如下:
在这里插入图片描述
可利用它将元组或列表转换为字符串,详情见 https://blog.youkuaiyun.com/wenhao_ir/article/details/125960082

18-利用成员函数maketrans()和函数translate()实现字符映射转换

str.maketrans(intab, outtab)

示例代码如下:

intab = "aeiou"
outtab = "12345"
trantab = str.maketrans(intab, outtab)

str1 = "this is string example....wow!!!"
print(str1.translate(trantab))

运行结果如下:
在这里插入图片描述

19-利用成员函数partition()实现字符串拆分

partition() 方法用来根据指定的字符串作为分割符将字符串进行分割。
如果字符串包含指定的分隔符,则返回一个3元的元组,第一个为分隔符左边的子串,第二个为分隔符本身,第三个为分隔符右边的子串。
示例代码如下:

str1 = "blog.youkuaiyun.com/wenhao_ir"
print(str1.partition("net/"))

在这里插入图片描述
如果想从右边开始查找分割符,则可用函数rpartition() 实现。

20-利用成员函数split()实现字符串较为自由的切割

str.split(str="", num=string.count(str))

split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串。

str – 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
num – 分割次数。默认为 -1, 即分隔所有。
示例代码如下:

txt = "Google#优快云#Taobao#Facebook"

x1 = txt.split("#")
x2 = txt.split("#", 1)
x3 = txt.split("#", 2)

print(x1)
print(x2)
print(x3)

运行结果如下:
在这里插入图片描述
如果希望从右边开始分割,则可以使用函数rsplit()实现。

21-使用成员函数splitlines()实现利用换行符分割字符串

str.splitlines([keepends])

keepends – 在输出结果里是否保留换行符(‘\r’, ‘\r\n’, \n’),默认为 False,不包含换行符,如果为 True,则保留换行符。
示例代码如下:

str1 = 'ab c\n\nde fg\rkl\r\n'
print(str1.splitlines())

str2 = 'ab c\n\nde fg\rkl\r\n'
print(str2.splitlines(True))

运行结果如下:
在这里插入图片描述

本文参考自:
https://blog.youkuaiyun.com/wenhao_ir/article/details/125100220

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

<think>嗯,用户想了解字符串操作和常用方法的汇总,涉及不同编程语言。首先,我需要整理常见编程语言如Python、Java、C++、JavaScript的字符串处理方法。根据用户提供的引用,已经有一些关于Python的split、格式化等方法的例子,比如引用[2]和引用[3]。这可能意味着用户对Python特别感兴趣,但问题中也提到其他语言,所以需要覆盖更多语言。 首先,要确定字符串操作的基本分类,比如创建、拼接、分割、查找替换、格式化、转换等。每个类别下,列出不同语言的具体方法。例如,Python的split方法在引用[2]中提到,而格式化在引用[3]中有例子。C++的分割方法在引用[4]和[5]中提到了split函数和正则表达式迭代器,可能需要详细说明。 然后,要确保每个语言的例子语法正确,比如Python使用str.split(),Java用String.split(),C++可能需要使用vector和boost库的方法。注意用户提到的系统级指令,特别是LaTeX格式,所有数学表达式要用$...$,独立公式用$$...$$,但这里可能更多是代码块,所以需要正确使用代码标记。 另外,用户要求生成相关问题,可能需要考虑字符串操作的性能、不同语言的差异、最佳实践等。比如,Python字符串不可变的影响,或者如何处理中文字符串的问题。还要注意引用用户提供的参考资料,在适当的位置添加引用标记,如[^1]、[^2]等。 需要检查是否有遗漏的重要操作,比如正则表达式、大小写转换、去除空格等。确保每个部分结构清晰,分点列出,帮助用户逐步理解。同时,回答要符合中文习惯,避免技术术语翻译生硬。 最后,验证所有代码示例的正确性,比如Python字符串拼接用加号,Java用concat方法,C++用append等。确保分割、查找替换等示例正确,特别是C++部分可能涉及更多库函数,需要正确引用用户提供的引用[4]和[5]中的方法。 总结,需要分语言、分类别整理字符串操作,提供代码示例,正确引用相关资料,并生成相关问题,确保内容全面且符合用户需求。</think>### 字符串操作与常用方法汇总 字符串操作是编程的核心技能之一,不同编程语言提供了丰富的内置方法。以下是常见操作的分类汇总及跨语言实现示例--- #### 一、基础操作 1. **创建与初始化** - Python: `s = "Hello"` - Java: `String s = "Hello";` - C++: `std::string s = "Hello";` 2. **字符串拼接** - Python: `s1 + s2` 或 `" ".join([s1, s2])` - Java: `s1.concat(s2)` 或 `StringBuilder` - C++: `s1.append(s2)` --- #### 二、常用方法分类 1. **分割与合并** - **Python** ```python s = "apple,banana,orange" parts = s.split(",") # 输出: ["apple", "banana", "orange"] new_str = "-".join(parts) # 输出: "apple-banana-orange" ``` - **Java** ```java String s = "apple,banana,orange"; String[] parts = s.split(","); // 正则表达式分割 ``` - **C++** 使用`std::stringstream`或正则表达式库(需包含`<regex>`)[^4][^5]。 2. **查找与替换** - **Python** ```python s.find("banana") # 返回索引,未找到返回-1 s.replace("apple", "pear") # 替换所有匹配项 ``` - **JavaScript** ```javascript let s = "Hello World"; s.indexOf("World"); // 返回6 s.replace("World", "Universe"); ``` 3. **格式化与对齐** - **Python** ```python format(text, "^20") # 中间对齐,总长度20 [^3] f"{name:>10}" # 右对齐 ``` - **C++** ```cpp printf("%-10s", "Hello"); // 左对齐,宽度10 ``` 4. **类型转换** - **Python** ```python num_str = str(123) # 数字转字符串 num = int("456") # 字符串转整数 ``` - **Java** ```java Integer.parseInt("456"); // 可能抛出NumberFormatException ``` --- #### 三、高级操作 1. **正则表达式** - **Python** ```python import re re.findall(r"\d+", "a1b23") # 输出: ["1", "23"] ``` - **C++** ```cpp #include <regex> std::regex reg("\\d+"); auto it = std::sregex_iterator(s.begin(), s.end(), reg); // 匹配数字 ``` 2. **不可变性与内存管理** - Python字符串不可变,修改需创建新对象。 - Java的`String`不可变,`StringBuilder`用于高效修改。 --- #### 四、语言差异总结 | 特性 | Python | Java | C++ | |--------------------|-----------------|-----------------|------------------| | 不可变性 | ✔️ | ✔️ | ❌ (可修改) | | 正则表达式支持 | `re`模块 | `java.util.regex`| `<regex>`头文件 | | 内存效率 | 中等 | 中等 | 高 | ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昊虹AI笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值