跳至主要內容

Python

LincZero大约 4 分钟

Python

目录

字符类型

对象类型 > 字符串(元素不可变)

使用

  • 性质

    • 不可变性:Python字符串不可以被更改,赋值给字符串索引的位置会导致错误。如果需要一个不同的字符串,你应该创建一个新的

      ​ (存储字符串的变量可变,字符串元素不可变,为区别于常量其更贴切的说法是元素不可变性

  • 字面量方式

    • 一般字面量:可以用单引号 ('...') 或双引号 ("...") 标识,\可以用来转义引号

    • 原始(raw)字符串:在第一个引号前面加上一个 r

    • 多行字符串:使用三引号:"""..."""'''...'''。行尾换行符会被自动包含到字符串中,但是可以在行尾加上 \ 来避免这个行为

    • 字符串拼接:字符串可以由+操作符连接(粘到一起),可以由*表示重复,不可以拼接字符串和变量(运算符重载) 相邻的两个字符串可以省略加号自动连接(但字符串不能是表达式)

    • 字符串检索:字符串也可以被截取(检索)。类似于 C ,字符串的第一个字符索引为 0。 索引也可以是负数,这将导致从右边开始计算。(请注意 -0 实际上就是 0)

    • 字符串切片:注意,包含起始的字符,不包含末尾的字符。这使得 s[:i] + s[i:] 永远等于 s【Python特有】 切片的索引有非常有用的默认值;省略的第一个索引默认为零,省略的第二个索引默认为切片的字符串的大小 Python 能够优雅地处理那些没有意义的切片索引: 一个过大的索引值(即下标值大于字符串实际长度)将被字符串实际长度所代替 当上边界比下边界大时(即切片左值大于右值)就返回空字符串

    • 比较

      ==:使用来比较两个字符串内的value值是否相同

      is:比较两个字符串的id值

  • 对象操作(类方法)

    • [str].title(),单词首字母大写
    • [str].upper(),全部大写
    • [str].lower(),全部小写
    • [str].rstrip(s=" "),清除末尾的空白或指定子串,不改变对象==(千万不要和 rsplit 搞混,那个是切分!!!)==
    • [str].lstrip(s=" "),清除开头的空白或指定子串,不改变对象
    • [str].strip(s=" "),清除两端的空白或指定子串,不改变对象,通常参数为\n清除读文件时的行内换行符
    • [str].replace(old,new)替换字符串
    • [str].find()返回子串在字符串中第一次出现的偏移量
    • [str].split(s)返回用子串分割后的字符串数组
  • 格式化字符串方法

    • 详见 “交互” 一章
  • 内置函数操作

    • len(str)返回字符串长度
  • 转义字符

    • \n,换行符
    • \t,制表符

格式字符串

参考

f-string

我个人认为最好用的一种

-string是2015年python 3.6 根据PEP 498新添加的一种字符串格式化方法,f-string实际上是在运行时计算的表达式,而不是常量值。在Python源代码中,f-string是一个文字字符串,前缀为’f’,其中包含大括号内的表达式。表达式会将大括号中的内容替换为其值

【专题】修改字符串的几种方法

在Python中,字符串是不可变类型,即无法直接修改字符串的某一位字符。

常见的修改方法有以下4种:(本质都是新建一个新的字符串)

方法1:将字符串转换成列表后修改值,然后用join组成新字符串

>>> s = 'abcdef'                  	# 原字符串
>>> s1 = list(s)                  	# 将字符串转换为列表
>>> s1                         
['a', 'b', 'c', 'd', 'e', 'f']		# 列表的每一个元素为一个字符
>>> s1[4] = 'E'                   	# 将列表中的第5个字符修改为E
>>> s1[5] = 'F'                   	# 将列表中的第5个字符修改为E
>>> s1
['a', 'b', 'c', 'd', 'E', 'F']  
>>> s = ''.join(s1)               	# 用空串将列表中的所有字符重新连接为字符串
>>> s
'abcdEF'                        	# 新字符串

方法2: 通过字符串序列切片方式【推荐】

>>> s = 'Hello World' 
>>> s = s[:6] + 'Bital'				# s前6个字符串+'Bital'
>>> s
'Hello Bital'
>>> s = s[:3] + s[8:]            	# s前3个字符串+s第8位之后的字符串
>>> s
'Heltal'

方法3: 使用字符串的replace函数

>>> s='abcdef'
>>> s=s.replace('a','A')        	# 用A替换a
>>> s
'Abcdef'
>>> s=s.replace('bcd','123')   		# 用123替换bcd 
>>> s
'A123ef'

方法4: 通过给一个变量赋值(或者重新赋值)

>>> s = 'Hello World'
>>> s2 = ' 2017'				# 变量赋值
>>> s = s+s2
>>> s
'Hello World 2017'

>>> s = 'Hello World'
>>> s = 'Hello World 2017'   	# 重新赋值
>>> s
'Hello World 2017'