Python字符串值得注意的事

  • class str(object=''):没有给出encoding和errors,返回的是object.str()方法中的内容,若object没有str()方法,则返回repr(object)
    class str(object=b'', encoding='utf-8', errors='strict'):对于给出encoding或者errors参数之一时,object应该为bytes或者bytearray对象,此时str()等价于bytes.decode(encoding,errors)
    对于传递一个bytes对象而不给encoding和errors时,返回的是非正式的字符串表示
str_a=str(69)#'69'
list_a=str(['wa',2,3,4])#"['wa', 2, 3, 4]"

通过定义str()函数,我们可以控制str(object)

class A:
    def __str__(self):
        return 'wahoo'
        
a=A()
str(a)#'wahoo'

当object为bytes类型,而不传入encoding或者errors参数,返回情况如下:

str(b'45')#"b'45'",保留了b'',这往往不是我们想要的
str(b'45',encoding='utf-8')#'45'
str(b"45",errors='decoding error')#'45'
  • 字符串转义字符也是很重要的一课
转义字符 描述
\ 用在一行代码的末尾表示续行
\'或者\" 单引号或者双引号
\b 退格
\000
\n 换行
\v 纵向制表符
\t 横向制表符
\r 回车
\f 换页
  • 在Python中并不支持单字符类型,单字符也是当作一个字符串存在

  • 字符串运算符

  1. + 加号运算符
    和很多语言一样,加号用在字符串之间表示连接字符串
str_b='Hello'
str_c=' Python'
str_b+str_c#'Hello Python'
  1. * 乘号运算符
    重复字符串,多用来初始化,这也可以用在list或者tuple中
str_b*5#'HelloHelloHelloHelloHello'

list_a=[1]*8
print(list_a)#[1, 1, 1, 1, 1, 1, 1, 1]

tuple_a=(1,)*8
print(tuple_a)#(1, 1, 1, 1, 1, 1, 1, 1)

[]或者[:]对str进行索引或者切片

str_b='Hello'
print(str_b[1])#'e'
print(str_b[1:4])#'ell'

in 或者not in判断字符串中是否包含指定字符,返回布尔类型

str_b='Hello'
print('He'in str_b)#True
print('z'not in str_b)#True

r'str'或者R'str',不采用转义,主要用于输出原始字符串

print('\n')#换行
print(r'\n')#'\n'
  • 字符串的内建函数
    capitalize()函数将字符串的第一个字符转换为大写,可用在英文句式或者人名地名,需要注意的是该函数会将除字符串首字符外其他字符转化为小写
name_a='mary juLY'
print(name_a.capitalize())
#'Mary july'

那么,认真的你可能会问,如果首字符不是字母会怎样,答案是该字符串中的所有字母均会变为小写

name_a='2mary juLY'
print(name_a.capitalize())
#'2mary july'

聪明的你发现这样july的首字母并没有大写,那么title()函数可能是你想要的,它会将每一个单次首字母大写,其余小写

name_a='mary juLY'
print(name_a.title())#Mary July

好了,与字母大小写相关的函数还有str.lower(),str.upper()函数,前者是将所有大写字母化为小写,后者则相反,swapcase()用来大写转小写,小写转大写,判断字符串中所有区分大小写的字符是否大写或者小写,可以用str.isupper()、str.islower()来判断

str_c='abcdhaHsgaHH'
str_c_upper=str_c.upper()#转为大写
print(str_c_upper)#'ABCDHAHSGAHH'

digit_b='123sS'
digit_b.islower()#False

lstrip()、rstrip()删除字符串左端、右端的空格,而strip()则删除左右两端的空格

str_d=' hhhha what r u doing '
str_d.strip()#'hhhha what r u doing'

参考资源
更多的函数可以参考博客
Python3中isdigit(), isdecimal(), isnumeric()的区别和字符串的常用方法

你可能感兴趣的:(Python字符串值得注意的事)