学习python中的字符串

Python中的字符串(str):

字符串是由零个或多个字符组成的有限序列(字符串是由Unicode码点组成的不可变序列)——使用单引号,双引号,三引号作为定界符,不同定界符之间可以互相嵌套;使用字母r,或R引导的表示原始字符串

例如:’swfu’ “I’student”
‘“Python is a great language”’, r’C:\Windows\notepad.exe’

字符串是一种序列,这意味着它具备序列类型都支持的操作: 以下的s、t皆表示序列,x表示元素

x in s # 若s包含x,返回True,否则返回False

s=’1,2,3’

x=’2’

print(x in s)

输出: True

x not in s # 若s包含x,返回False,否则返回True

s=’1,2,3’

x=’2’

print(x not in s)

输出: False

s + t # 连接两个序列

s=’1,2,3’

t=’2,4’

print(s + t)

输出: 1,2,32,4

s * n # s复制n次

s=’1,2,3’

print(s * 5)

输出: 1,2,31,2,31,2,31,2,31,2,3

s[i] # s的索引第i项

s=‘1 2 3’

print(s[2])

输出: 2

s[i:j] # s切片从第i项到第j-1项

s=‘1 2 3 4’

print(s[0:2])

输出: 1

s[i:j:k] # s切片从第i项到第j-1项,间隔为k

s=‘1,2,3,4’

print(s[0:6:2])

输出: 123

len(s) # s的长度

s=‘1,2,3,4’

print(len(s))

输出: 7

min(s) # s的最小元素
max(s) # s的最大元素

s=‘1,2,3,4’

print(max(s))

输出: 4

s.index(x) # x的索引位置

s=‘1,2,3,4’

print(min(s))

输出: ,

s.count(x) # s中出现x的总次数

s=‘1,2,3,4’

print(s.count(‘1’))

输出: 1

字符串序列是一种不可变序列,这意味着它不能像可变序列一能,进行就地修改:

a=“python”

b=“cat” + a

print(id(a)==id(b))

输出: False(布尔值:布尔只有两个值:0,1)

1或0
真或假

作为对比,列表可以就地改

a=[“python”]

a.append(“cat”)

print(a)

输出:[‘python’,
‘cat’]

Unicode编码标准于1991年推出,至今迭代到了第11版,已经能够编码146个书写系统的130000个字符,可谓是无所不包,真不愧是“国际码”。Unicode编码其实是一个二进制字符集,它建立了从书写字符映射成唯一的数字字符的关系,但是,由于各系统平台对字符的理解差异,以及出于节省空间的考虑,Unicode编码还需要再做一次转换,转换后的新的二进制数字才能作为实际存储及网络传输时的编码。

这种转换方式被称为Unicode转换格式(Unicode Transformation Format,简称为UTF),它又细分为UTF-8、UTF-16、UTF-32等等方式。我们最常用的是UTF-8。为什么UTF-8最常用呢?因为它是可变长度的编码方案,针对不同的字符使用不同的字节数来编码,例如编码英文字母时,只需要一个字节(8个比特),而编码较复杂的汉字时,就会用到三个字节(24个比特)。

二进制的编码串可以说是给机器阅读的,为了方便,我们通常会将其转化为十六进制,例如“中”字的Unicode编码可以表示成0x4e2d ,其UTF-8编码可以表示为0xe4b8ad ,'0x’用于开头表示十六进制,这样就简洁多了。不过,UTF-8编码的结果会被表示成以字节为单位的形式,例如“中”字用UTF-8编码后的字节形式是\xe4\xb8\xad 。

Python中为了区分Unicode编码与字节码,分别在开头加“u”和“b”以示区分。在Python 3中,因为Unicode成了默认编码格式,所以“u”被省略掉了。

字符转Unicode编码(python3中,开头U被省略,b不可省略)

print(hex(ord(‘中’)))

print(hex(ord(‘A’)))

输出:

0x4e2d

0x41

字符转UTF-8编码(encode)

print(‘中’.encode(‘utf-8’))

print(‘A’.encode(‘utf-8’))

输出:

b’\xe4\xb8\xad’

b’A’

Unicode编码还原成字符

print(chr(0x4e2d))

print(chr(0x41))

输出

A

UTF-8编码还原成字符(decode)

print(b’\xe4\xb8\xad’.decode(‘utf-8’))

print(b’A’.decode(‘utf-8’))

输出:

A

字符串的应用:

切片:(切片规则:s[start?step]
从start开始到end-1结束,步长为step)

显示所有字符 print s[:]

s=‘1 2 3 4 5 6’

print(s[:])

输出: 1 2 3 4 5 6

显示前3个字符
print s[:3]

s=‘1 2 3 4 5 6’

print(s[:3])

输出: 1 2

对字符串倒序输出 print
s[::-1]

s=‘1 2 3 4 5 6’

print(s[::-1])

输出: 6 5 4 3 2 1

除第一个字符外,其余全部显示 print s[1:]

s=‘1 2 3 4 5 6’

print(s[1:])

输出: 2 3 4 5 6

字符串开头和结尾匹配:

s=‘xiao.xin’

print (s.endswith(’.xin’)) #找出以.xin结尾

输出: True

s=‘xin,jiang’

print(s.startswith(‘xiao’))

输出: False

a = input(“请输入文件名:”)

if a.endswith(".xin"):

print(a)

else:

print("error file")

输出: xiao xin

判断字符串中的每个字符是否为特定类型
有一个字符不满足,便返回false

s为字符串

s.isalnum() 所有字符都是数字或者字母

s.isalpha() 所有字符都是字母

s.isdigit() 所有字符都是数字

s.islower() 所有字符都是小写

s.isupper() 所有字符都是大写

s.istitle() 所有单词都是首字母大写,像标题

s.isspace() 所有字符都是空白字符、\t、\n、\r

判断是整数还是浮点数

a=12

b=12.1

print(isinstance(a,int))

print(isinstance(b,float))

print(isinstance(b,int))

输出:True True Flase

print(“Hello”.istitle())

print(“hellow”.istitle())

print(“HelloWorld”.istitle())

输出:

True

False

False

Python中str函数isdigit,isdecimal,isnumeric的区别:

num = “1”
#unicode

num.isdigit() # True

num.isdecimal()#
True

num.isnumeric() #
True

num = “1” # 全角

num.isdigit() #
True

num.isdecimal() # True

num.isnumeric() #
True

num = b"1" # byte

num.isdigit() #
True

num.isdecimal() #
AttributeError ‘bytes’ object has no attribute ‘isdecimal’

num.isnumeric() #
AttributeError ‘bytes’ object has no attribute ‘isnumeric’

num =
“IV” # 罗马数字

num.isdigit() #
True

num.isdecimal() # False

num.isnumeric() #
True

num = “四” # 汉字

num.isdigit() # False

num.isdecimal() # False

num.isnumeric() #
True

num = ‘1’

print(num.isdigit())

输出: True

索引:(不可以越界)

s=“12345”

print(s[5])

输出: raceback (most recent call last):

File “D:/Program Files
(x86)/untitled/three.py”, line 2, in

print(s[5])

IndexError: string index out
of range

反向索引:

s=“xiao,xin”

print(s[-1])

print(s[-2])

输出:

n

i

字符串连接:

print(“xiao” + “xin”)

print(‘xiao’ “xin”)

print(“xiao”,“xin”)

输出:

xiaoxin

xiaoxin

xiao xin

字符串列表连接 str.join(list):

函数join接受一个列表,然后用字符串连接列表中的每一个元素:

a = [“xiaoxin”,“xiaokui”,“meiya”,“guangzhi”]

team = ‘xiaobai’

print(team.join(a))

输出: xiaoxinxiaobaixiaokuixiaobaimeiyaxiaobaiguangzhi

%连接字符串:

a=“xiao”

b=“xin”

print("%s%s"%(a,b))

输出: xiaoxin

字符串转化:

lower(转化为小写字母),upper(转化为大写字母),title(转化为标题),swapcase(大小写字母相互转化),capitalize(首字母大写,然后其他变小写)

print(“hello”.upper())

print(“heLlo”.lower())

print(“heLlo”.title())

print(“heLlo”.swapcase())print(“helLo”.capitalize())

输出:

HELLO

hello

Hello

HElLO

Hello

字符串的搜索和替换:

find:检查字符串中是否包含字符串

replace:用新字符new替换字符串中的字符old。如果指定第三个参数max,则替换不超过max次。

count:统计字符串中某字符出现的次数

s = “xiao xin , xiao kui”

print(s.find(‘xiao’))

print(s.rfind(‘xiao’)

输出:

0

11

s = “xiao xin , xiao kui”

print(s.replace(‘kui’,‘bai’))

输出: xiao xin , xiao
bai

s = “xiao xin , xiao kui”

print(s.replace(‘xiao’,‘yeyuan’))

输出: yeyuan xin , yeyuan kui

s = “xiao xin , xiao kui”

s1=s.replace(‘xiao’,‘yeyuan’)

print(s1)

print(s)

输出:

yeyuan
xin , yeyuan kui

xiao
xin , xiao kui

s=“xiao xin , xiao kui”

print(s.count(“xiao”))

print(s.count(“x”))

print(s.count(“b”))

输出:

2

3

0

字符串中的分离和拼接:

Split:通过制定分隔符对字符进行分割,如果,参数num有指定值,仅分割num个字符串

Join:将序列中的元素与指定的字符串连接成一个新的字符串

a = “112.251.235”

print(a.split(’.’))

输出: [‘112’,
‘251’, ‘235’]

a = “2019-8-15”

print(a.replace(’-’,’/’))

输出: 2019/8/15

a = [‘小’,‘新’]

print("".join(a))print(“*”.join(a))

输出:

小新

小*新

去掉两边空格(空格为广义的
空格,包括:\n,\t,\r):

Strip: 去掉两边空格

Letrip: 去掉左边空格

Rstrip: 去掉右边空格

s = “\nxiaoxin\n”

print(s.lstrip())

print(s)

print(s.strip())

print(s.rstrip())

输出:
xiaoxin

xiaoxin

xiaoxin
xiaoxin

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值