当前位置:首页>基础编程学习>Python>Python字符串介绍
Python字符串介绍
阅读 2
2024-09-20

python中字符串的格式

如下定义的变量a,存储的是数字类型的值
  a = 100
如下定义的变量b,存储的是字符串类型的值
 b = "hello siddim.com"
或者
b = 'hello siddim.com.cn'
Python中的字符串使用单引号 '' 或双引号 "" 括起来,同时使用反斜杠 \ 转义特殊字符,实际工作当中,接触、处理最多的数据类型,莫过于字符串了。
下面使用两种方式定义字符串,两种方式均可
single_str = 'a我是单引号括起来的字符串'
type(single_str)      # type 查看数据类型
double_str = "a我是双引号括起来的字符串"
type(double_str)      # type 查看数据类型

字符串输出

name = 'siddimAdmin'
position = '讲师'
address = '北京市海淀区中关村科技园'
print('--------------------------------------------------')
 print("姓名:%s"%name)
print("职位:%s"%position)
print("公司地址:%s"�dress) 
print('--------------------------------------------------')
输出:
--------------------------------------------------
姓名:siddimAdmin
职位:讲师
公司地址:北京市海淀区中关村科技园
--------------------------------------------------

字符串输入

之前在学习input的时候,通过它能够完成从键盘获取数据,然后保存到指定的变量中; 注意:input获取的数据,都以字符串的方式进行保存,即使输入的是数字,那么也是以字符串方式保存
userName = input('请输入用户名:') 
print("用户名为:%s"%userName)
password = input('请输入密码:') 
print("密码为:%s"%password)
执行结果:

请输入用户名:sd    
用户名为:sd
请输入密码:123456
密码为:123456

字符串常见操作

如有字符串 mystr="welcome to python world and just do it"; ,以下是常见的操作

find查找

检测 java 是否包含在 mystr中,如果是返回开始的索引值,否则返回-1
mystr="welcome to python world and just do it"; 
print(mystr.find("java",0));
结果是:-1

index

mystr="welcome to python world and just do it"; 
print(mystr.index("java",0));
find()方法一样,只不过如果java不在 mystr中会报一个异常.ValueError: substring not found

count

返回 ostartend之间 在 mystr里面出现的次数
mystr="welcome to python world and just do it"; 
print(mystr.count("o"));
结果:5

replace

mystr 中的 str1 替换成 str2,如果 count 指定,则替换不超过 count 次.
mystr="welcome to python world and just do it"; 
print(mystr.replace("o","9"));
结果:
welc9me t9 pyth9n w9rld and just d9 it

split

str 为分隔符切片 mystr,如果 maxsplit有指定值,则仅分隔 maxsplit 个子字符串
mystr="welcome to python world and just do it"; 
print(mystr.split("o"));
结果:
['welc', 'me t', ' pyth', 'n w', 'rld and just d', ' it']

capitalize

把字符串的第一个字符大写
mystr.capitalize()

mystr="welcome to python world and just do it"; 
print(mystr.capitalize())

结果:
Welcome to python world and just do it

title

把字符串的每个单词首字母大写
mystr="welcome to python world and just do it"; 
print(mystr.title())
运行结果:
Welcome To Python World And Just Do It

startswith

检查字符串是否是以 H 开头, 是则返回 True,否则返回 False
mystr="welcome to python world and just do it"; 
print(mystr.startswith("H"))

输出:

False

endswith

检查字符串是否以t结束,如果是返回True,否则返回 False.
mystr="welcome to python world and just do it"; 
print(mystr.endswith("t"))
输出:True

lower

转换 mystr 中所有大写字符为小写
mystr="welcome to python world and just do it"; 
print(mystr.lower())
输出:
welcome to python world and just do it

upper

转换 mystr 中的小写字母为大写
mystr="welcome to python world and just do it"; 
print(mystr.upper())
输出:
WELCOME TO PYTHON WORLD AND JUST DO IT

ljust

返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串
mystr="python"; 
print(mystr.ljust(15))

rjust

返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串
mystr="python"; 
print(mystr.rjust(15))


center

返回一个原字符串居中,并使用空格填充至长度 width 的新字符串
mystr="python"; 
print(mystr.center(15))

lstrip

删除 mystr 左边的空白字符
mystr="      python"; 
print(mystr.lstrip())

输出:
python

rstrip

删除 mystr 字符串末尾的空白字符
mystr="      python          "; 
print(mystr.rstrip())

输出:
     python  

strip

删除mystr字符串两端的空白字符
mystr="      python          Java  "; 
print(mystr.strip())
输出:
python          Java

rfind

类似于 find()函数,不过是从右边开始查找.
mystr="welcome to python world and just do it"; 
print(mystr.rfind("o"))

输出:
34

rindex

类似于 index(),不过是从右边开始.
mystr="welcome to python world and just do it"; 
print(mystr.rindex("t"))

输出:
37

partition

mystrand分割成三部分,and前,andand
mystr="welcome to python world and just do it"; 
print(mystr.partition("and"))
输出:
('welcome to python world ', 'and', ' just do it')

rpartition

类似于 partition()函数,不过是从右边开始.
mystr="welcome to python world and just do it"; 
print(mystr.rpartition("o"))
输出:
('welcome to python world and just d', 'o', ' it')

splitlines

按照行分隔,返回一个包含各行作为元素的列表
mystr="welcome\n to python world\n and\njust do it"; 
print(mystr.splitlines())
输出:
['welcome', ' to python world', ' and', 'just do it']

isalpha

如果 mystr 所有字符都是字母 则返回 True,否则返回 False
mystr="welcome to python world and just do it"; 
print(mystr.isalpha())
输出:
False

isdigit

如果 mystr 只包含数字则返回 True 否则返回 False.
mystr="welcome to python world and just do it"; 
print(mystr.isdigit())
输出:False

isalnum

如果 mystr 所有字符都是字母或数字则返回 True,否则返回 False
mystr.isalnum()

isspace

如果 mystr 中只包含空格,则返回 True,否则返回 False.
mystr.isspace()

join

mystr 中每个字符后面插入str,构造出一个新的字符串
mystr="welcome to python world and just do it"; 
print(mystr.join("AI"))
输出:
Awelcome to python world and just do itI

字符串下标和切片

1. 下标索引

所谓 “下标” ,就是编号,就好比超市中的存储柜的编号,通过这个编号就能找到相应的存储空间
python字符串中"下标"的使用 列表与元组支持下标索引好理解,字符串实际上就是字符的数组,所以也支持下标索引。 如果有字符串: names = "AIforAll"; ,在内存中的实际存储如下:


如果想取出部分字符,那么可以通过 下标 的方法,(注意python中下标从 0 开始)
names = "AIforAll"; 
print("0--",names[0]) 
print("1--",names[1]) 
print("2--",names[2])
print("3--",names[3]) 
print("4--",names[4]) 
print("5--",names[5])
print("6--",names[6]) 
0-- A
1-- I
2-- f
3-- o
4-- r
5-- A
6-- l

2. 切片

切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。

切片的语法:[起始:结束:步长]

注意:选取的区间属于左闭右开型,即从"起始"位开始,到"结束"位的前一位结束(不包含结束位本身)。 我们以字符串为例讲解。
如果取出一部分,则可以在中括号[]中,使用:
names = "AIforAll"; 
print(names[0:3]) # 取 下标0~2 的字符
输出:
AIf
names = "AIforAll"; 
print(names[0:3]) # 取 下标0~2 的字符
print(names[0:5]) # 取 下标为0~4 的字符     
print(names[3:5]) # 取 下标为3、4 的字符
print(names[2:]) # 取 下标为2开始到最后的字符
print(names[1:-1]) # 取 下标为1开始 到 最后第2个 之间的字符

输出:
AIf
AIfor
or
forAll
IforAl
通用类自建函数中, replacejoinstripcountsplitindexlenfind 比较常用。
通用类自建函数支持链式调用,如处理字符串中空字符串和换行符,我们先使用 replace 处理空字符串,再使用 strip 处理换行符,可直接在后面使用.链式调用。
double_str = " 我是等待链式 调用处理的字符串 \n"
double_str.replace(" ", "").strip()
'我是等待链式调用处理的字符串'
字符串操作分为五大类,分别是通用类、英文单词类、判断类、编码类、以及其他类,常用方法如下:


join capitalize casefold center count encode endswith expandtabs
find format format map
index isalnum isalpha isascii isdecimal isdigit isidentifier
islower isnumeric isprintable isspace istitle isupper
ljust lower Istrip maketrans partition
removeprefix removesuffix
replace rfind rindex rjust rpartition rsplit rstrip split splitlines startswith strip
swapcase title translate upper zfill


评论 (0)