Python字符串

移除字符串前两位

string = "Hello,World!"
方法一:new_string = string[2:]
方法二:string.repalce(string[:2],"")
方法三:string.lstrip(string[:2])

删除:strip/lstrip/rstrip

strip:用来去除头尾字符、空白符(包括\n、\r、\t、' ',即:换行、回车、制表符、空格)
lstrip:用来去除开头字符、空白符(包括\n、\r、\t、' ',即:换行、回车、制表符、空格)
rstrip:用来去除结尾字符、空白符(包括\n、\r、\t、' ',即:换行、回车、制表符、空格)
# 删除两边的空格
'  hello,python  '.strip()
'hello,python'
# 删除两边的-字符
'---hello,python--'.strip('-')
'hello,python'
# 删除左边空格
'  hello,python  '.lstrip()
'hello,python  '
# 删除右边空格
'  hello,python  '.rstrip()
'  hello,python'
PS:之前删除两端的中间的字符无法删除
removeprefix/removesufix,removeprefix方法删除字符串的前缀,removesufix方法删除字符串的后缀,这两个方法与strip方法不同,它们只删除一次。strip方法是删除所有能匹配到的字符。

计算字符串长度:len

fruit = "apple"
print(len(fruit))
# 5

查找:index/rindex

index方法获取子字符串出现的最小位置,rindex方法获取子字符串出现的最大位置。可约束字符查找的起止位置。当子字符串未查到到时,会报错。
s='hello,python string'
# 字符t的最小位置
s.index('t')
# 字符t的最小位置(从索引9后开始查找)
s.index('t',9)
# 字符t的最大位置
s.rindex('t')
ps:find/rfind  find方法与index基本相同,当子字符串未查找到时,不报错,返回-1。

字符串重复:*

可以使用星号(*)让字符串重复指定次数
str1="Yeah " # 字符串中包含空格
str2="!"
print(str1*3)  # 输出结果为:Yeah Yeah Yeah 
print(str2*10) # 输出结果为:!!!!!!!!!!

索引与切片

在Python中,字符串切片是一个非常实用的操作,从一个字符串中提取子串。切片操作的语法是使用方括号 [] 来指定起始和结束索引以及步长。
string[start:end:step]
start:切片开始的位置,默认为0。
end:切片结束的位置,不包含该位置的字符,默认为字符串的长度。
step:切片之间的步进值,默认为1。
指定start
str1="Hachi"
print(str1[0:]) # 输出结果为:Hachi
print(str1[2:]) # 输出结果为:chi
str1[0:]表示从索引0开始到字符串结尾的所有字符,因为没有指定结束索引,所以默认会取到字符串末尾,所以切片的结果为"Hachi"。
str1[2:] 表示从索引2开始到字符串结尾的所有字符。因此,它将跳过前两个字符('H' 和 'a'),然后取出剩余部分。对于字符串 "Hachi" 来说,结果是 "chi"。
指定end
str1="Hachi"
print(str1[:2]) # 输出结果为:Ha
print(str1[:4]) # 输出结果为:Hach
str1[:2] 表示从字符串开头(因为没有指定开始索引,默认为0)取到索引2(不包括索引2指向的字符)的所有字符。对于字符串 "Hachi" 来说,结果是 "Ha"。
str1[:4] 表示从字符串开头取到索引4(不包括索引4指向的字符)的所有字符。对于字符串 "Hachi" 来说,结果是 "Hach"。
指定step
str1="Hachi&123"
print(str1[::2])   # 输出结果为:Hci13
print(str1[1:7:2]) # 输出结果为:ah&
print(str1[1:6:3]) # 输出结果为:ai
str1[::2] 表示从字符串开头到结尾(因为没有指定开始和结束索引,默认分别为0和字符串长度)并每隔一个字符取一个。对于字符串 "Hachi&123" 来说,结果确实是 "Hci13"。
str1[1:7:2] 表示从索引1开始到索引6(不包括索引7指向的字符),并每隔两个字符取一个。对于字符串 "Hachi&123" 来说,结果是 "ah&"。
str1[1:6:3] 表示从索引1开始到索引5(不包括索引6指向的字符),并每隔三个字符取一个。对于字符串 "Hachi&123" 来说,结果是 "ai"。

for循环遍历

str1="Hachi"
for i in str1:
  print(i)
# 输出结果为
# H
# a
# c
# h
# i
for循环会遍历字符串中的每个字符,将每个字符赋值给变量 i,然后执行循环体内的语句,即print(i)打印当前字符。这样就会逐行输出字符串中的每个字符。

while循环遍历

str1="Hachi"
i=0 # 初始化索引变量i为0
n=len(str1) # 计算字符串的长度,赋值给变量n
while i<n: # 当索引i小于字符串长度n时执行循环
  print(str1[i])
  i=i+1  # 将索引i递增1
使用while 循环和索引来遍历字符串中的每个字符,while循环多次执行,直到索引 i 的值达到字符串的长度 n。在每一轮循环中,它打印字符串中相应索引的字符,实现了遍历整个字符串并逐行打印的效果。

计数:count

一般来说,我们也可以使用函数 count() 来计算字符串中相应子串的数目,如下所示:
string = "aaaabbbcc"
print(string.count("a")) # 4, as "a" appears 4 times
print(string.count("b")) # 3, as "b" appears 3 times
print(string.count("c")) # 2
print(string.count("z"))  # 0
print(string.count("aa")) # 2

拼接:join

join方法可以拼接多个字符串,传入的参数为可迭代对象,如list,tuple等。
# 用,拼接多个字符串
','.join(('hello','python'))
'hello,python'

替换:replace

replace方法替换字符串中的子字符串,可设置替换次数。
# 替换全部
'apple'.replace('p','P')
'aPPle'
# 替换一次
'apple'.replace('p','P',1)
'aPple'

translate:长替换

translate方法用自定义的翻译表替换字符中的某些字符。用maketrans方法制作翻译表,可使用字典或两个等长的字符串创建。
# 翻译字符串(字典翻译表)
'hello,python3'.translate(str.maketrans({'h':'H','p':'P','3':'3.8'}))
'Hello,PytHon3.8'
# 翻译字符串(字符串翻译表)
'hello,python3'.translate(str.maketrans('hp3','HP2'))
'Hello,PytHon2'

expandtabs:替换空格

expandtabs方法用来替换字符串中的制表符\t为空格,默认替换成8个空格。
# 替换\t为空格(默认8个)
'\taa\tbb\tcc'.expandtabs()
'        aa      bb      cc'
# 替换\t为空格(2个)
'\taa\tbb\tcc'.expandtabs(2)
'  aa  bb  cc'

分割:split/rsplit

split方法按分隔符(默认空格)分割字符串,可设置分割次数,默认-1,表示全部分割。rsplit表示从字符串的 右边开始分割。分割后为list。
# 全部分割
'a b c'.split()
['a', 'b', 'c']
# 只分割一次
'a b c'.split(maxsplit=1)
['a', 'b c']
# 只分割一次(从右边开始分割)
'a b c'.rsplit(maxsplit=1)
['a b', 'c']

splitline:换行符分割

splitline方法按换行符\n,\r分割字符串。分割后为list。设置keepends为True,可在结果中保留分割符。
# 分割行,不保留分隔符
'abc\n123\rpython'.splitlines()
['abc', '123', 'python']
# 分割行,保留分割符
'abc\n123\rpython'.splitlines(keepends=True)
['abc\n', '123\r', 'python']

partition/rpartition

partition方法按照分割符分割字符串成为三部分(头,分隔符,尾),分割符位置为第一次出现的位置。rpartition分割符位置为右边开始的第一个位置,分割后为三元元组(tuple)。
# 从左边分割
'hello,python,java'.partition(',')
('hello', ',', 'python,java')
# 从右边分割
'hello,python,java'.rpartition(',')
('hello,python', ',', 'java')

变换

capitalize方法把字符串标题化,一般首字母会大写,其他字母小写。lower方法把大写字母变成小写,upper方法把小写字母变成大写。swapcase方法把小写变大写,大写变小写。
title 主要用于将字符串中每个单词的首个字母转化为大写,举例如下:
sentence = "my name is bob"
print(sentence.title()) # My Name Is Bob"

format/format_map
format方法格式化方法显示占位符{}内容,可传入位置参数和关键字参数。format_map方法传入一个map对象
'{} was born in {country}'.format('Jack',country='China')
'Jack was born in China'
# format格式化输出
'decimal{:.2f},percentage{:.1%},thousandSeparator{:,}'.format(12.367,0.237,12354)
'decimal12.37,percentage23.7%,thousandSeparator12,354'
# format_map传入map对象格式化字符串
'{name} was born in {country}'.format_map({'name':'Jack','country':'China'})
'Jack was born in China'

填充:center/ljust/rjust/zfill

center方法把字符串放在指定长度的中间,ljust方法把字符串放在左边,rjust把字符串放在右边,均可设置填充字符。
# 字符串位于中间,总长度为30
s.center(30)
'     hello,python string      '
# 字符串位于中间,总长度为30,填充字符为-
s.center(30,'-')
'-----hello,python string------'
# 字符串位于左边,总长度为30,填充字符为-
s.ljust(30,'-')
'hello,python string-----------'
# 字符串位于右边,总长度为30,填充字符为-
s.rjust(30,'-')
'-----------hello,python string'
zfill方法在字符串的左边填充0,需要设置字符串总长度。
'abc'.zfill(10)
'0000000abc'

编码:encode/decode

encode方法把字符编码成字节,decode方法用于把字节解码成字符。
# 编码成字节
b='中国'.encode()
b'\xe4\xb8\xad\xe5\x9b\xbd'
# 解码成字符
b.decode()
'中国'

判断

startswith/endswith
startswith方法判断字符串是否以指定字符串开头,endswith方法用于判断字符串是否以指定字符串结尾, 都可设置字符串判断的起止位置。指定字符串为tuple时,表示或,可匹配多条件。
# 判断以hello开头
s.startswith('hello')
True
# 判断以hello或者bye开头
s.startswith(('hello','bye'))
True
# 判断以python开头(设置判断开始位置)
s.startswith('python',6)
True
# 判断以string结尾
s.endswith('string')
True
# 判断以string或者bye结尾
s.endswith(('string','bye'))
True
# 判断以python结尾(设置判断结束位置)
s.endswith('python',None,12)
True

isalnum方法判断字符串是否由字母和数字组成。
# 只有字符和数字
'Aa123'.isalnum()
True
# 有,符号
',Aa123'.isalnum()
False

isalpha方法判断字符串是否只由字母组成。
'Aa'.isalpha()
True
'Aa123'.isalpha()
False

isnumeric方法判断字符串是否只由数字组成。数字包括了unicode数字,罗马数字,汉字数字。识别范围最广。
'123'.isnumeric()
True
# 指数^2
'\u00B2'.isnumeric()
True
# 汉字数字
'五'.isnumeric()
True
# 罗马数字
'Ⅷ'.isnumeric()
True

isdigit方法判断字符串是否只由数字组成。只能识别普通数字和unicode数字。识别范围居中。
'123'.isdigit()
True
'\u00B2'.isdigit()
True
'五'.isdigit()
False
'Ⅷ'.isdigit()
False

isdecimal方法判断字符串是否只由数字组成。只能识别普通数字。识别范围最下。
'123'.isdecimal()
True
'\u00B2'.isdecimal()
False
'五'.isdecimal()
False
'Ⅷ'.isdecimal()
False

isascii方法判断字符串是否由ASCII码组成。ASCII字符的码位在 U+0000-U+007F 范围内
'As34>,'.isascii()
True
'中国'.isascii()
False

isidentifier用来检查字符串是否为有效标识符。如果字符串仅包含字母数字字母(a-z)和(0-9)或下划线(_), 则该字符串被视为有效标识符。有效的标识符不能以数字开头或包含任何空格。
'My_Python09'.isidentifier()
True
# 数字打头不有效
'2string'.isidentifier()
False
# 包含空格不有效
'one two'.isidentifier()
False

islower方法判断字符串是否都是小写字母。
'letter'.islower()
True
'Letter'.islower()
False

isupper方法判断字符串是否都是大写字母。
'LETTER'.isupper()
True
'Letter'.isupper()
False

istitle方法判断字符串中的单词是否都是标题形式(首字母大写,其他小写)。
'Hello,Python'.istitle()
True
'Hello,python'.istitle()
False

isspace方法判断字符串是否全是空格。
'  '.isspace()
True
'a b'.isspace()
False

isprintable方法判断字符串是否可打印。不可打印的字符有换行符\n,制表符\t。
'hello,\t'.isprintable()
False
'hello,\n'.isprintable()
False

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值