Python09_字符串

python的官方文档有中文的:www.python.org->Docs->坐上角语言切换为中文

  • 定义:字符串是以单引号或双引号括起来的任意文本

‘abd’ “def” #字符串不包括引号本身

创建字符串

str1 = "sunck is a good man!"
str2 = 'sunk is a good man!'

新字符串的组成方式

  • 用加号
str1 = "lao"
str2 = "wang"
str3 = str1 + str2
  • 用占位符
str = "laowang"
str2 = "===%s==="%str

#利用法二使字符串小数在输出时指定小数位数(因为python中的小数有误差)
str = "1.2345"
str2= "%.2f"%float(str)

字符串运算

str3 = "sunck is a"
str4 = "good man!"
str5 = str3 + str4
print(str5)

类似的还有后面的join方法
caution:字符串本身不可变,能变的只是变量,改变变量不是改变字符串

输出重复字符串

str6 = "good"
str7 = str6 * 10
print(str7)

字符串比较大小

挨个比较字符的ASCII码,ASCII码大的大

访问字符串中的某一个字符

通过索引下标查找字符,索引从0开始
如果索引为负,表示从右往左数,右边第一个为-1

  • 格式:字符串名[下标]
str8 = "Tom is a good man!"
print(str8[2]) #输出d
str8[2] = "x" #报错,因为字符串不可变

切片

  • def:访问字符串中的某一部分
  • str[start: end: step]

step 默认为1,如果step为负值,则从右往左
负值意为从右往左数,最后字符为-1

  • 将字符串逆序:str[::-1]
str9 = "sunck is a good man!"
str10 = str9[6:15] #包首不包尾
print(str10) #空格也是一个字符,此处输出"is a good"
str11 = str9[:15] #从头开始截取到结尾下标之前
str12 = str9[16:] #输出man!
caution:如果下标越 界,往前到开始,往后到结束

成员运算符的运用

print("good" in str9) #输出true
print("google" not in str9) #输出true

字符串相关方法

序:常用方法

  1. find
  2. replace
  3. split
  4. count
  5. join
  6. strip

类型一:字符串为参数

eval(str)

  • 功能:将字符串str当成有效的表达式来求值并返回计算结果
num1 = eval("123")
print(num1) #输出123,num1为整型
print(evla("12+3")) #输出15,因为是当成表达式计算值

len(str)

  • 功能:返回字符串的长度,注意,非字节数,而是字符的个数

类型二:字符串为调用者

str.lower()

  • 功能:转换字符串中的所有大写字母转换为小写字母(重新生成字符串)
    str.upper()
  • 功能:转换字符串中所有小写字母为大写字母
print("Hello world".upper())
str = "Hello world"
print(str.lower())

str.swapcase()

  • 功能:将字符串中的大小写互相转换
print("hello WORLD".swapcase()) #输出“HELLO world"

str.capitalize()

  • 功能:首字母大写,其他小写
print("hello woRld".capitalize()) #输出"Hello world"

str.title()

  • 功能:每个单词的首字母大写,其他小写
print("hOlle world".title()) #输出"Hello World"

str.center(width, fillcahr)

print("hello world".center(40, "*")) #输出"**************hello world***************"
# 功能:将字符串居中,指定总宽度,两边用指定字符填充,如果参数符号为奇数个,则左边少一个

str.ljust(width[, fillchar])

  • 功能:指定总宽度,左对齐,右边用指定字符填充
print("hello world".ljust(20, "*")) #输出"hello world*********"

str.rjust(width[, fillcahr])

  • 功能:指定总宽度,右对齐,左边用指定字符填充
print("hello world".rjust(20, "*")) #输出"*********hello world"

str.zfill(width)

  • 功能:用0左补齐
print("hello word".zfill(40)) #输出"000000000000000000000000000000hello word"

str.count(substr[, start][, end])

  • 功能:返回字符串中参数字符串出现的次数,可以指定一个范围,默认从头到尾
print("I am a a a aa very nice man".count("a")) #输出7

str.find(substr[, start][, end])

  • 功能:返回substr在指定范围内第一次出现的下标(非相对start),默认从头到尾,若没有则返回-1。ps:从左至右
print("I am Tom".find("To")) #输出5
print("I am Tom".find("To", 2)) #输出5

str.rfind(substr[, start][, end])

  • 功能:在指定范围内从右至左找substr,返回下标

str.index(substr[, start = 0][, end = len(str)])

  • 功能:功能与find相同,但是若查找的字符串不在母串中,则会报错(可结合in先行判断)。ps:从左至右
if "wo" in "hello word":
	print("hello world".index("wo")) #输出6

str.rindex(substr[, start = 0][, end = len(str)])

  • 功能:功能与find相同,但是若查找的字符串不在母串中,则会报错。ps:从右至左
print("hello world".rindex("wo")) #输出6

str.lstrip(char)

  • 功能:去除字符串中左边指定的char,默认为空格
print("****hello wrold".lstrip('*')) #输出"hello wrold"

str.rstrip(char)

  • 功能:去除字符串中右边指定的char,默认为空格
print("****hello wrold****".rstrip('*')) #输出"****hello wrold"

比较大小
直接用等号

printf("a" == "a")   #输出TRUE

split(str=" ", num)

以str为分隔符截取字符串,默认为看不见的符号,eg:\t \n 空格;指定num,则仅截取num个字符串

num其实很少写

str38 = "sunck is a good man"
print(str38.split("*")

#求字符串中的单词数

str = input("please input ypur sentence:\n")
count = 0
for i in str:
    if len(i) > 0:
        count += 1
print(count)

splitlines(True/False)

按照(’\n’,’\r\n’,’\r’)分隔,返回以行字符串为元素的列表

参数默认为False,即不保留换行符,如果为True,保留换行符

str40 = """
sunck is a good man!
sunck is a nice man!
sunck is handsome man!
"""
print(str40.splitlines())

partition()

以参数字符串将原字符传分隔为3部分,并将其以元组形式返回,参数字符串在中间

str = "my name is Tom"
print(str.partition("is"))

join(seq)

以指定的分隔符,将seq中的所有元素组合成一个字符串

格式:分隔符串.join(list)

list41 = ["sunck","is","a","good","man"]
str42 = " ".join(list41)    #以空格为分隔符,将list41组合为字符串,如果作为参数的可迭代对象是字典,在该类对可迭代对象的操作往往是基于key值
print(str42)

max()/min()

str43 = "sunck is a good man!"
print(max(str43))
print(min(str43))

replace(oldstr, newstr,count)

以newstr替换oldstr,默认替换全部,如果指定了count,则只替换count个

str44 = "sunck is a good man!"
str45 = str44.replace("good","nice")
print(str44)
print(str45)

  • maketrans(“oldstr”,“newstr”)与translate(maketrans)

maketrans()

创建一个字符串映射表,要与tranlate结合使用*

将o替换为n,l替换为e,……,找到一个即替换一个,不必找到整个oldstr后再替换,实际上用得较少,因为不可控

translate

str47 = str.maketrans("un", "ac")
str46 = "sunck is a good man"
print(str46.translate(str47)) #输出sacck is a good mac

startwith(str, start = 0, end = len(str))

endwith(str, start = 0, end = len(str))

分别为在指定的范围内判断字符串是不是以参数字符串开始或结束,如果没有指定范围,默认整个字符串

str49 = "sunck is a good man"
print(str49.startwith("sucnk")
print(str49.entwith("man"))

encode(encoding=“utf-8”, errors="strict)
decode()

编码方式:utf-8、gbk。errors为处理错误的方式,有strict,ignore

注意:解码时的编码格式要与编码时的格式相同

str51 = "sunck is a good man"
data52 = str51.encode("utf-8")  #data52的类型为bytes
print(data52)

str53 = data52.decode("utf-8")
print(str53)

isalpha()

如果字符串中至少有一个字符且所有的字符都是字母则返回True,否则返回False

str54 = "sunck is a good man"
print(str54.isalpha())

isalnum()

如果字符串中至少有一个字符且所有的字符都字母或数字则返回True,否则返回False

取自is al(pha) number

str55 = "la2b3"
print(str55.isalnum())  #输出True

isupper()

如果字符串中至少有一个字母且所有的字母都是大写的英文字母则返回True,否则返回False

至少一个英文字母,可以有其他的,比如数字,但是只有所有的字母都是大写时才返回True

print("ABD".isupper())  #输出True

islower()

与isupper()类似

isdigit()/isnumeric()

如果字符串包含数字,则返回True,否则返回False

istitle()

如果字符串是标题化的,则返回True,注意,有个方法为title,即将字符串标题化

isdecimal()

如果字符串只包含10进制字符,则返回True,否则False

isspace()

如果字符串中只包含空格(可以一个或多个,包括\t,\n,\r),则返回True,否则返回False

即判断字符串是否为空白符

字符函数

ord()

  • 将字符转为对应的ASCII码
print(ord('a'))  #输出97

chr()

  • 将数字转为对应的字符
print(chr(97))  #输出'a'

翻外篇

import string

import string
str = string.ascii.uppercase	#得到A-Z的字符串

布尔(bool)值

一个布尔值只有True、False两种值

空值

python里面用None标记

  • None不能当作数字0来理解,是一个特殊值
#单例设计模式
Class S:
	instance = None
	def __new__(self, *args, **kwargs):
		if S.instance == None:
		S.instance = super().__new__(cls)
		return S.instance

A = S()
B = S()
print(id(A),id(B))	#会发现两个的地址相同
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值