Day2:Python基础(二)——内置类型之字符串 str

系列文章目录

上一篇:Day2:Python基础(一)——内置类型之 数字类型(int, bool, float, complex)


文章目录

  • 系列文章目录
  • 前言
  • 一、字面量
  • 二、特点
  • 三、访问方式
  • 四、常用运算及方法
  • 总结


前言

在本章节中,我们将学习Python的 文本序列类型 也就是 字符串 str 进行学习 。顾名思义,之所以叫叫文本序列类型,首先其内容是 文本 ,其次它是 有序 的一系列元素,故而称之为 序列 。接下来,我们会学习字符串的 字面量特点访问方式 及常用的方法。


一、字面量

完整的词法定义如下:(摘自Python官方文档)

stringliteral   ::= [stringprefix](shortstring | longstring)
stringprefix    ::= "r" | "u" | "R" | "U" | "f" | "F"
                    | "fr" | "Fr" | "fR" | "FR" | "rf" | "rF" | "Rf" | "RF"
shortstring     ::= "'" shortstringitem* "'" | '"' shortstringitem* '"'
longstring      ::= "'''" longstringitem* "'''" | '"""' longstringitem* '"""'
shortstringitem ::= shortstringchar | stringescapeseq
longstringitem  ::= longstringchar | stringescapeseq
shortstringchar ::= <any source character except "\" or newline or the quote>
longstringchar  ::= <any source character except "\">
stringescapeseq ::= "\" <any source character>

解释一下,定义大致的意思就是说,一个字符串字面量可以有一个前缀(可选),然后是短字符串(单行文本)或长字符串(多行文本)的内容。其中短字符串由' '或者" " 作为内容的容器,长字符串则是由''' '''或者""" """来作为内容的容器,容器中的内容可以是普通字符(即除了 \、换行、字符串结束符的字符)或者转义序列(如\n换行符)

形如以下形式:

s1 = 'hello'	# print会输出hello
s2 = "hello"	# print会输出hello
s3 = 'I\'m fine'           # print会输出I'm fine
s4 = "He said \"hi\""      # print会输出He said "hi"
s5 = '''
    hello
    world
    '''                   # print会原样输出
s6 = """
    line1
    line2
    """                   # print会原样输出

二、特点

  1. 不可变类型:一旦定义,则分配内存空间,不可修改对应内存单元的内容
  2. 可迭代类型:可以通过 for ch in str: 对字符串进行遍历
  3. 可哈希:可以作为 dict类型key

三、访问方式

  1. 通过索引访问:格式为 str[index],其中 str 为字符串或其引用, index 即为索引,字符的第一个元素索引为 0

    下方为索引访问实例:

str1 = 'Hello,World!'

print(str1[1])	# 输出e,即第二个字符
print(str1[-1])	# 输出!,即倒数第一个字符
  1. 通过切片访问:格式为 str[ [start] : [end] : [step] ]start 决定切片 起始位置,不写则默认为0, end 决定切片的 结束位置 ,不写则默认为最后一个元素(包含最后一个元素),区间规则是 左闭右开 (start闭,end开),step 决定 步长 (包括方向,为+则从左往右,为-则从右往左),不写则默认为1

下方为切片访问实例:

str1 = 'Hello,World!'

print(str1[0:5:1])	# 输出Hello
print(str1[::])		# 输出原字符串,即Hello,World!
print(str1[::-1])	# 输出!dlroW,olleH,相当于将源字符串进行倒置
print(str1[::2])	# 输出HloWrd,即每两个字符才读取一次元素

四、常用运算及方法

  1. ‘ + ’运算:即 字符串拼接 ,形式为 str1 + str2
    下方为实例:
str1 = 'Hello,'
str2 = 'World!'
print(str1 + str2)	# 输出Hello,World!
  1. ‘ * ’运算:即 字符串重复 ,形式为 str * count
    下方为实例:
str1 = '='
print(str1 * 20)	输出====================,可以作为分割线使用
  1. r前缀:即无视字符串内的转义符,进行 原样 输出,常用于文件路径的表示
    下方为实例:
str1  = r"C:\new\test"		# 相当于"C:\\new\\test"
print(str1)		# 输出C:\new\test
  1. f前缀:字面量中穿插变量的方便操作
    下方为实例:
stu_name = 'Welt'
stu_gender = '男'
print(f'我叫{stu_name},是{stu_gender}性')	# 输出:我叫Welt,是男性
  1. %占位格式输出:与f前缀的作用类似
    下方为实例:
stu_name = 'Welt'
stu_gender = '男'
show = '我叫%s,是%s性' % (stu_name, stu_gender)		# %占位格式输出
print(show)		# 输出:我叫Welt,是男性
  1. str.ljust(width[, fillchar])
    str.rjust(width[, fillchar])
    str.center(width[, fillchar])
    :作用都是将原字符串 填充 到指定长度(返回新字符串),只是原串在填充后所处位置不同
    下方为实例:
souce_str = 'Welt'
fillchar = '='
width = 20
ljust_str = souce_str.ljust(20,fillchar)
rjust_str = souce_str.rjust(20,fillchar)
center_str = souce_str.center(20,fillchar)
print('''
----%s----
----%s----
----%s----
''' % (ljust_str, rjust_str, center_str)
)
# 输出为
# ----Welt================----
# ----================Welt----
# ----========Welt========----
  1. str.split(sep=None, maxsplit=-1):用于字符串分割,返回的是元素为分割后的若干字符串的 列表sep 表示分割符,maxsplit 表示最大分割次数,为-1表示不限次数
    下方为实例:
souce_str = 'I\'m Welt and who are you'
dest_list = souce_str.split(' ')		# 用空格作为分隔符
print(dest_list)	# 输出为["I'm", 'Welt', 'and', 'who', 'are', 'you']

如果在实际中有相应需求,更多的方法和操作可以在Python官方文档中进行查询。


总结

本章中我们了解了什么是字符串,字符串有哪些特点,有哪些访问字符串的方式以及字符串常见的运算及方法,重点在于理解字符串的特点,至于运算及方法可以通过文档查看。

你可能感兴趣的:(python,开发语言)