python中的字符串

1.字符串的表达方式

1.一对双引号、一对单引号、一对三个双引号、一对三个单引号中的数据,就是字符串

2.如果使用一对引号来定义字符串,当出现符号冲突时可以使用转义字符

2.如果使用一对引号来定义字符串,当出现符号冲突时可以使用转义字符

3.使用单引号、双引号定义的字符可以包裹任意文本

4.同样引号里面不可以包裹同样的引号

a = 'hello'
b = "good"
c = """呵呵呵"""
d = '''嘿嘿嘿'''
m = ' xiaoming said :"I am xiaoming"'
n = """ xiaoming said :"I am xiaoming" """

2.字符串里面的转义字符

\表示的是转义字符,作用是对\后面的字符进行转义

\' :表示一个普通的单引号

``"`: 表示一个普通的双引号

\n:表示一个换行

\t:表示显示一个制表符,中间是四个空格

\ \ :表示一个普通\符号

x = 'I\'m xiaoming '
y = 'hello \n world'
print(x, y)

在字符串的前面添加 r 在python里表示的是原生字符串

z = 'hello teacher'
k = 'hello \teacher'
j = r'hello \teacher'
print(z)
print(k)
print(j)

3.字符串的索引

字符串通过下标来获取或者修改指定位置的数据,字符串的下标从0开始。

注意:字符串是不可变的数据,对字符串的任何操作,都不会改变原有的字符串

world = "zhangsan"
print(world[4])

4.字符串的切片

切片就是从字符串里面复制一段指定的内容,生成一个新的字符串。

切片语法:str[start ​: end : step​] 包头不包尾。

其中step指的是步长,即间隔。每隔step-1个取一次,步长默认为1,不能为0;可以是负数,负数表示从右往左切片。

m = 'abcdefghijklmnopkrstuvwxyz'
print(m[5])   //f
print(m[0:9]) //abcdefghi
print(m[23:]) //xyz
print(m[:9])  //abcdefghi
print(m[3:15:2])//dfhjln
print(m[15:3:-1])//ponmlkjihgfe
print(m[::])  //abcdefghijklmnopkrstuvwxyz
print(m[::-1])//zyxwvutsrkponmlkjihgfedcba
print(m[-9:-5])//rstu

注意:字符串从后往前数是从-1开始,但同样是包前不包后

5.获取字符串的长度

字符串里使用内置函数len获取字符串的长度

x = 'abcdefghijklmnhijklmn'
print(len(x))

6.字符串下标查找

可以用find/index/rfind/rindex获取指定字符串的下标

  • find/index返回的是字符串下标的最小值;rfind/rindex返回的是字符串下标的最大值
  • 查找字符时,若字符在字符串里不存在,find返回的结果时-1,index会报错
  • rfind/rindex与find/index的用法一样
x = 'abcdefghijklmnhijklmn'
print(len(x))
print(x.find('l'))
print(x.index('l'))
print(x.find('p'))  # -1 如果字符在字符串里不存在,结果是 -1
print(x.index('p'))  # 使用index,如果字符不存在,会报错
print(x.find('l'), 4, 9)  # 表示在下标4到下标9之间,找l

7.字符串计算次数

count:count函数属于内置函数,用于统计字符串中某个字符或者列表中某个元素出现的次数,返回值是一个整数。

str = "Hello, World!"
count = str.count("o")
print(count) # 输出结果:2

str = "I am learning Python and Python is a popular programming language."
word = "Python"count = str.count(word)
print(count) # 输出结果:2

8.字符串的替换

replace:用来替换字符串中指定的内容,如果指定次数count,则替换不会超过count次

my_str = '今天天气好晴朗,处处好风光呀好风光'
new_str = my_str.replace('好', '坏')
print(my_str)
print(new_str)  # 今天天气坏晴朗,处处坏风光呀坏风光

new_str = my_str.replace('好', '坏', 2) # 指定了替换的次数
print(new_str)

9.字符串的分割

字符串分割:split/splitlines/partition/rpartition

**split:**以指定字符串为分隔符切片,如果maxsplit有指定值,则分割maxsplit+1个子字符串,返回结果是一个列表。

mystr = '今天天气好晴朗,处处好风光呀好风光'
result1 = mystr.split()  # 没有指定分隔符,默认使用空格,换行等空白字符进行分隔
print(result1)  #['今天天气好晴朗,处处好风光呀好风光']
# 没有空白符,所以字符串未被分隔

result2 = mystr.split('好')  # 以 '好' 为分隔符
print(result2)  #['今天天气', '晴朗,处处', '风光呀', '风光']

result3 = mystr.split('好', 2)  # 以 '好' 为分隔符,最多分割成3份
print(result3)  #['今天天气', '晴朗,处处', '风光呀好风光']

**rsplit:**用法和split基本一致,只不过是从右往左分隔

**splitlines:**按照三种换行符(‘\r’, ‘\r\n’, \n’)分隔,返回一个列表,列表中的字符串是每一行的内容。

语法:str.splitlines([keepends])

参数keepends:是否保留换行符,默认为False,则按行分割开的每一个字符最后不包含换行符’\r’, ‘\r\n’, \n’;如果为True,则在这些字符最后保留换行符’\r’, ‘\r\n’, \n’。

mystr = 'hello\nworld'
print(mystr.splitlines())  # ['hello', 'world']
str1 = 'ab c\n\nde fg\rkl\r\n'
print(str1.splitlines())   # ['ab c', '', 'de fg', 'kl']
str2 = 'ab c\n\nde fg\rkl\r\n'
print(str2.splitlines(True))   # ['ab c\n', '\n', 'de fg\r', 'kl\r\n']

如果想自定义分隔符,可以采用str.split(),在split后面的参数里输入想要以之分割的符号。

注意:行中的两个连续的\n中间是什么都没有的,但分割时会将它分割成一个空的字符,作为单独的一部分存储在列表中。

text = "Hello\n\nWorld\nWelcome"
lines = text.split('\n')
print(lines)
# ['Hello', '', 'World', 'Welcome']

**partition:**指定一个字符作为分隔符,将字符串分为三部分:前面 分隔符 后面。

**rpartition:**与partirion语法相同,但是从右侧分隔。

print('abcdefxhfgedxuot'.partition('x'))
# ('abcdef', 'x', 'hfgedxuot')
print('abcdefxhfgedxuot'.rpartition('x'))
# ('abcdefxhfged', 'x', 'uot')

10.字符串修改大小写

在python中字符串的大小写转换方法:capitalize/title/upper/lower

  • 使用lower()方法,把所有大写字母转换成小写字母。 str.lower()
  • 使用upper()方法,把所有小写字母转换成大写字母 str.upper()
  • 使用capitalize()方法,仅第一个单词首字母转化为大写字母,其余小写字母 str.capitalize()
  • 使用title()方法,把每个单词的首字母转化为大写字母,其余为小写字母 str.title()
while True:
    content = input('请输入内容,输入exit退出:')
    print('您输入的内容是', content)
    if content.lower() == 'exit':
        break

11.字符串对齐处理

**ljust/rjust/center:**返回原字符串左对齐、右对齐以及居中对齐,不足的使用指定字符进行填充。

ljust :左对齐 语法:str.ljust(长度,填充字符)

rjust :右对齐 语法:str.rjust(长度,填充字符)

center :居中对齐 语法:str.center(长度,填充字符)

str1 = 'python'
print(str1.ljust(10, '.'))   # python....
print(str1.rjust(10, '#'))   # ####python
print(str1.center(10, '@'))  # @@python@@

12.字符串删除空格

strip/lstrip/rstrip:用于删除字符串中的特定字符。

strip:默认情况下删除字符串开头和结尾的空格

lstrip:默认情况下删除字符串开头的空格

rstrip:默认情况下删除字符串结尾的空格

s = " hello world "
print(s.strip())   # 输出 "hello world"
print(s.lstrip())
print(s.rstrip())
  • strip()方法可以接受一个参数,用于指定要删除的字符。例如,可以使用strip()方法删除字符串中的换行符和制表符。
s = "\n\t hello world \n\t"
print(s.strip("\n\t"))  # 输出 "hello world"
  • 当strip()方法接受一个参数时,该参数将指定要删除的字符。如果在字符串中间出现要删除的字符,则该字符不会被删除
s = "hello world"
s1 = "world hello"
print(s.strip("h"))  # 输出 "ello world"
print(s1.strip('h'))  # 输出 "world hello"

删除字符串中的所有空格

s = " hello world "
print(s.replace(" ", ""))   # 输出 "helloworld"

以某种固定格式显示字符串中,我们可以将它切割成一个列表

x = 'zhangsan+lisi+wangwu+jack+tony+henry+chris'
names = x.split('+')
print(names)
# ['zhangsan', 'lisi', 'wangwu', 'jack', 'tony', 'henry', 'chris']

将列表转换为字符串

fruits = ['apple', 'pear', 'peach', 'banana', 'orange', 'grape']
print('-'.join(fruits))
print('*'.join('hello'))
# apple-pear-peach-banana-orange-grape
# h*e*l*l*o

13.字符串拼接

语法:‘连接符’.join(‘str’)

';'.join('abc')  # 输出结果为:'a;b;c'

14.字符串运算

1.字符串和字符串之间能够运用加法运算符,作用是将两个字符串拼接成一个字符串,例如:‘hello’+‘world’ 的结果是’helloworld’
2.字符串和数字之间可以做乘法运算,结果是将指定的字符串重复多次,例如:‘hello’ * 2 的结果是’hellohello’
3.字符串和字符串之间秒如果使用比较运算符进行计算,会获取字符对应的编码,然后进行比较
4.字符串和数字之间做 == 运算,结果是False, 做!=运算,结果是True
5.除上述几种运算符之外,字符串默认不支持其他运算符

15.字符编码

字符集是一个字符的集合,例如ASCII字符集、Unicode字符集等。编码是将字符集中的字符映射到具体的数字或二进制表示的过程。常见的编码方案有ASCII、UTF-8、UTF-16等。

字符与数字编码存在一个对应的关系。使用内置函数chrord能够查看数字和字符的对应关系。

ord:获取字符对应的编码

chr:根据编码获取对应的字符

print(ord('a'))
print(chr(65))

**GBK:**国标扩,一个汉字占两个字节,简体中文

**BIG5:**繁体中文

**utf-8:**统一编码,汉字占三个字节

encode:可以将字符串转换成指定编码集结果

decode:可以将一个编码集转换成对应的字符

print('你'.encode('gbk'))
print('你'.encode('utf-8'))
x = b'\xe4\xbd\xa0'
print(x.decode('utf-8'))

Python 3.x 默认使用Unicode字符集,并且通常使用UTF-8编码来表示Unicode字符。

16.in 和 not in运算符

用来判断一个内容在可迭代对象里面是否存在

word = 'hello'
x = input('请输入一个字符:')

判断用户输入的字符在字符串里面是否存在

word = 'hello'
x = input('请输入一个字符:')
for c in word:
    if x == c:
        print('您输入的内容存在')
        break
else:
    print('您输入的内容不存在')
    
    
 if word.find(x) == -1:
    print('您输入的内容不存在')
else:
    print('存在')
    
    

if x in word:
    print('存在')
else:
    print('不存在')
    
    

if x not in word:
    print('不存在')
else:
    print('存在')

17.字符串的格式化

1.可以使用 % 占位符来格式化一个字符串

%s ==> 表示的是字符串的占位符
%d ==> 表示的是整数的占位符
%nd ==>打印时,显示n位,如果不够,在前面使用空格补齐
%f ==> 表示的是浮点数的占位符
%.nf ==> 表示小数点后n位
%x ==> 将数字使用十六进制输出
name = 'zhangsan'
age = 18
print('大家好,我的名字是', name, '我今年', age, '岁了', sep=' ')
print('大家好,我的名字是%s,我今年%d岁了,我今天挣了%f元钱' % (name, age, 3.14))

print('大家好,我是%3d号男嘉宾' % 5)
print('大家好,我是%-3d号男嘉宾' % 5)
print('大家好,我是%03d号男嘉宾' % 5)
# 大家好,我是  5号男嘉宾
# 大家好,我是5  号男嘉宾
# 大家好,我是005号男嘉宾
print('我今天挣了%.2f元钱' % 3.141592653)
# 我今天挣了3.14元钱
print('我是 %%s, 我今年%d岁了' % 19)
# 我是 %s, 我今年19岁了

2.format方法

{}什么都不写也可以进行占位,会读取后面的内容,一一对应填充。

x = '大家好,我是{},我今年{}岁了'.format('张三', 18)
print(x)

{数字}根据数字的顺序进行填入,数字从0开始

y = '大家好,我是{1},我今年{0}岁了'.format(20, 'jerry')
print(y)
z = '大家好,我是{name},我今年{age}岁了,我来自{addr}'.format(age=18, name='jack', addr='襄阳')
print(z)

混合使用{数字} {变量}

a = '大家好,我是{name},我今年{1}岁了,我来自{0}'.format('泰国', 23, name='tony')
print(a)

{}什么都不写 {数字}不能混合使用

d = ['张三', 18, '上海', 180]
b = '大家好,我是{},我今年{}岁了,我来自{},身高{}cm'.format(d[0], d[1], d[2], d[3])
b = '大家好,我是{},我今年{}岁了,我来自{},身高{}cm'.format(*d)
print(b)

字典顺序无所谓

info = {'name': 'chris', 'age': 23, 'addr': '北京', 'height': 190}
c = '大家好,我是{name},我今年{age}岁了,我来自{addr},身高{height}cm'.format(**info)
print(c)
  • 18
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值