Python标准数据类型-字符串

字符串的定义

  • 用单引号 ’ ‘, 双引号" ", 三引号’‘’ ‘’'或 “”" “”"括起来的内容为字符串
  • 三引号可以将复杂的字符串进行赋值。
  • 三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符。
code:
a = "Shang Hai"
b = 'Guang Dong'
c = '''Pu Dong'''
print(a, "---", b, "---", c)
print(type(a), type(b), type(c))

result:
Shang Hai --- Guang Dong --- Pu Dong
<class 'str'> <class 'str'> <class 'str'>
  • 单引号 ’ ‘, 双引号" ", 三引号’‘’ ‘’’ 要严格配对,避免歧义
code:
str1 = "It's a dog."
str2 = "It's Lily's dog."
str3 = """It's Lily's dog."""
str4 = '''It's Lily's dog.'''
print(str1, "---", str2, "---", str3, "---", str4)

result:
It's a dog. --- It's Lily's dog. --- It's Lily's dog. --- It's Lily's dog.
  • 带歧义的, ‘It’, ‘s dog.’ 配对,中间内容不在字符串内
code:
str1 = 'It's Lily's dog.'
print(str1)

result:
SyntaxError: invalid syntax
  • 带歧义的解决方法
    – 如果非要使用冲突的引号,就得使用转义字符\来告诉解释器,这不是语句的分隔,只是一个单纯的标点符号
    – 外层使用其它引号
code:
str1 = 'It\'s Lily\'s dog.'
print(str1)
result:
It's Lily's dog.
code:
str1 = 'It\'s "Python"'    # '只是单纯的标点符号
print(str1)
str2 = "It's \"Python\""   # " "只是单纯的标点符号
str3 = '''It's "Python"'''
print(str1, "---", str2, "---", str3)
result:
It's "Python"
It's "Python" --- It's "Python" --- It's "Python"

字符串的索引和切片

  • 从左到右索引默认0开始的,最大范围是字符串长度少1
  • 从右到左索引默认-1开始的,直到字符串长度的相反数
    在这里插入图片描述

索引

通过索引取出字符串对应的值, str[索引值]

code:
str = "I LOVE CHINA."
print(str[0], "---", str[1], "---", str[4])			# str[1]是空格
print(str[-1], "---", str[5], "---", str[-13])		# str[-1]是标点.

result:
I ---   --- V
. --- E --- I

切片

通过切片取出字符串的一段字符 str[start:stop:step]

  • 结果中包头不包尾
  • 默认从左到右,步长为1。
  • 步长也可以取负数,表示倒序
  • 返回值仍是字符串
str = "I LOVE CHINA."
print(str[:])		#参数均省略时表示取字符串整体
I LOVE CHINA.
print(str[0:5])		#省略step,不包含str[5],step=1
I LOV
print(str[2:6])		#包含str[2],不包含str[6],step=1
LOVE
print(str[:6:2])	#从头开始,不包含str[6],step=2
ILV
print(str[2::2])	#从index=2开始,到结尾,step=2
LV HN.
print(str[::-1])	#从右到左,可以用来倒序排列
.ANIHC EVOL I		
print(str[-1:-3:-1])#末尾开始,倒数两个,不包含index=-3
.A

转义字符

在需要在字符中使用特殊字符时,python用反斜杠\转义字符

转义字符描述
\(在行尾时)续行符
\\反斜杠符号
\’单引号
\"双引号
\a响铃
\b退格(Backspace)
\f换页
\n换行
\r将光标定位到当前行的行首,光标后的内容消失
\t横向制表符
\v纵向制表符
\oyy8进制数yy代表的字符,例如:\o12代表换行
\xyy16进制数yy代表的字符,例如:\x0a代表换行
a = 3+\
    5
print(a)
8

print("a\\b\\c")
a\b\c

print('a\'bcd\"')
a'bcd"

print('abc\bde')
abde

print('abc\tdef')
abc	def

print('abc\x0aef')
abc
ef

print('abcdef\rgh')
gh

在这里插入图片描述

原始字符串

原始字符串,以大写R 或 小写r开始,r’',不对特殊字符进行转义

print(r'abc\ndef')
abc\ndef

字符串常用内建函数

方法描述举例
string.capitalize()首字符变为大写“abc”.capitalize() => ‘Abc’
string.center(width, fillchar)返回的新字符串string位于中间,长度为width,以fillchar填充“abc”.center(15,“-”) => ‘------abc------’
string.count(str, beg=0, end=len(string))str在string中出现的次数“aabcdae”.count(“a”) => 3
string.decode(encoding=‘UTF-8’, errors=‘strict’)以encoding指定的编码格式解码string,返回string类型“中国”.encode(“UTF-8”).decode(“UTF-8”) => ‘中国’
string.encode(encoding=‘UTF-8’, errors=‘strict’)以 encoding 指定的编码格式编码 string,返回byte类型“中国”.encode(“UTF-8”) => b’\xe4\xb8\xad\xe5\x9b\xbd’
string.startswith(obj, beg=0,end=len(string))检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查“abc”.startswith(“ab”) => True
string.endswith(obj, beg=0, end=len(string))检查字符串是否以 obj 结束“I love China.”.endswith(“a.”) =>True
string.find(str, beg=0, end=len(string))检测 str 是否包含在 string 中,返回起始索引或者-1I love China.".find(“love”) =>2
string.rfind(str, beg=0,end=len(string) )类似于 find() 函数,返回字符串最后一次出现的位置,如果没有匹配项则返回 -1“abcdabcd”.rfind(“b”) =>5
string.index(str, beg=0, end=len(string))检测 str 是否包含在 string 中,返回起始索引或者异常“I love China.”.index(“love”) =>2
string.rindex( str, beg=0,end=len(string))类似于 index(),不过是从右边开始“love China, love you”.rindex(“love”) =>12
string.isalnum()如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False“I 1 Love 2 China”.isalnum() => False “I1Love2China”.isalnum() => True
string.isalpha()如果 string 至少有一个字符并且所有字符都是字母则返回 True,否则返回 False“I1Love2China”.isalpha() => False
string.isdecimal()如果 string 只包含十进制数字则返回 True 否则返回 False“123”.isdecimal() => True
string.isdigit()如果 string 只包含数字则返回 True 否则返回 False.对byte类型也支持“14”.encode(“UTF-8”).isdigit() => True
string.isnumeric()对于 Unicode 数字、全角数字(双字节)、罗马数字和汉字数字会返回 True ,其他会返回 False。byte数字(单字节)无此方法123’.isnumeric() => True ‘Ⅷ’.isnumeric() => True “四”.isnumeric() => True
string.isspace()如果 string 中只包含空格,则返回 True,否则返回 False" ".isspace() => True
string.istitle()检测string中所有的单词拼写首字母是否为大写,且其他字母为小写“I Love China.”.istitle() => True
string.title()就是说所有单词都是以大写开始,其余字母均为小写“you have only one life”.title() => ‘You Have Only One Life’
string.islower()如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False“Abc”.islower() => False
string.lower()转换 string 中所有大写字符为小写“12ABde”.lower() => ‘12abde’
string.isupper()如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False“ABC”.isupper() => True
string.upper()转换 string 中的小写字母为大写“you have only one life”.upper() => ‘YOU HAVE ONLY ONE LIFE’
string.join(seq)以 string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串“ab”.join([“2”,“3”]) => ‘2ab3’
string.ljust(width,fillchar)返回一个原字符串左对齐,默认使用空格填充至长度 width 的新字符串“abc”.ljust(14,“-”) => ‘abc-----------’
string.rjust(width,fillchar)返回一个原字符串右对齐,默认使用空格填充至长度 width 的新字符串“abc”.rjust(14,“-”) => ‘-----------abc’
string.lstrip([chars])截掉 string 左边的空格或字符" abc".lstrip() => ‘abc’
string.rstrip([chars])截掉 string 右边的空格或字符" abc ".rstrip() => ’ abc’
string.strip([chars])执行string.lstrip([chars])和string.rstrip([chars])“123abc123123”.strip(“123”)=> ‘abc’
max(str)返回字符串 str 中最大的字符max(“AbcfD123”) => ‘f’
min(str)返回字符串 str 中最小的字符max(“AbcfD123”) => min(“AbcfD123”) => ‘1’
string.partition(str)从 str 出现的第一个位置起,把 字 符 串 string 分 成 一 个 3 元 素 的 元 组 (string_pre_str,str,string_post_str),如果 string 中不包含str 则 string_pre_str == string“abefabefabef”.partition(“ef”) => (‘ab’, ‘ef’, ‘abefabef’)
string.rpartition(str)类似于 partition()函数,不过是从右边开始查找“abefabefabef”.rpartition(“ef”) => (‘abefabefab’, ‘ef’, ‘’)
string.split(str=“”, num=string.count(str))以 str 为分隔符切片 string,如果 num 有指定值,则仅分隔 num+1 个子字符,返回列表串“abc”.split(“b”) => [‘a’, ‘c’]
string.swapcase()翻转大小写“ABcdEf”.swapcase() => ‘abCDeF’
str.zfill(width)返回长度为 width 的字符串,原字符串 string 右对齐,前面填充0“abc”.zfill(10) => ‘0000000abc’
str.replace(old, new[, max])把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次“It is a house”.replace(“is”, “IS”) => ‘It IS a house’

Python字符串运算符

操作符描述举例
+字符串连接“you” + “and” + “me” => ‘youandme’
*重复输出字符串“666”*3 => ‘666666666’
[] [:]索引或切片“abcd”[1] => ‘b’
in, not in成员运算符 - 如果字符串中包含给定的字符返回 True“c” in “abcd” => True
r/R原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义print(r"abcb\nde") => abcb\nde
%格式字符串

Python 字符串格式化占位符%

"%"是Python风格的字符串格式化操作符,非常类似C语言里的print()函数的字符串格式化

格式描述举例
%c格式化字符及其ASCII码print(“letter: %c” % 97) => letter: a
%s格式化字符串print(“word: %s” % “hilarious”) => word: hilarious
%d有符号整数(十进制)print(“number: %d” % 97) => number: 97
%u无符号整数(十进制)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值