字符串

字符串

1.什么是字符串

  • 用引号包括起来的一串字符。
  • 用引号来创建字符串。
    • 单引号
    • 双引号
    • 三单引号
    • 三双引号
str1='abcdefg'
str2="ABCDEFG"
str3='''I LOVE CHINA'''
str4="""俺がガンダムだ"""

print(str1)
print(str2)
print(str3)
print(str4)

print(type(str1))
print(type(str2))
print(type(str3))
print(type(str4))

# 输出
abcdefg
ABCDEFG
I LOVE CHINA
俺がガンダムだ
<class 'str'>
<class 'str'>
<class 'str'>
<class 'str'>
  • 注意:

    • 若字符串中有引号,要使用不同的引号包括字符串,或者使用转义字符‘\’将字符串中的引号转义,或者字符串前面加r。

    • 单引号和双引号使用时不能换行。换行需要加‘\’

      str1="ABC" \
           "DEFG"
      print(str1)
      
      

#输出
ABCDEFG
```

2.字符串的运算及常见操作

2.1 拼接

  • 使用+号拼接

  • 拼接基于同一种数据类型

a = ' hello '
b = ' world '
print(a + b)

#输出
 hello  world 

2.2 重复

a = ' City '
print(a * 3)

#输出
 City  City  City 

2.3 索引(偏移)[]

  • len() 返回字符串长度
str1='abcdefg1234567890'
for i in str1:
    print(i,end=' ')
print('')
for i in range(len(str1)):
    print(str1[i],end=' ')

#输出
a b c d e f g 1 2 3 4 5 6 7 8 9 0 
a b c d e f g 1 2 3 4 5 6 7 8 9 0 

2.4 切片[::]

  • [start:end:step] start为起始位置,end-1为终止位置,step为步长,默认为1
str1='abcdefg1234567890'
print(str1[1:6])
print(str1[-5:-1])
print(str1[-1:-5:-1])
print(str1[1:10:2])
print(str1[0:])
print(str1[:-1])
print(str1[:-1])

#输出
bcdef
6789
0987
bdf13
abcdefg1234567890
abcdefg123456789
0987654321gfedcba

2.5 大小写互换

str1 = 'life is short, you need python'

print(str1.lower())  # 转小写
print(str1.upper())  # 转大写
print(str1.swapcase())  # 大小写互换
print(str1.title())  # 转为标题模式
print(str1.capitalize())  # 首字母大写

#输出
life is short, you need python
LIFE IS SHORT, YOU NEED PYTHON
LIFE IS SHORT, YOU NEED PYTHON
Life Is Short, You Need Python
Life is short, you need python
# 验证码程序
import random
while True:
    str1 = ''
    for i in range(6):
        x = random.random()
        if x > 0.5:
            str1 += chr(random.randint(65, 90))
        else:
            str1 += chr(random.randint(97, 122))
    print('验证码:',str1)
    print('请输入验证码:(不用区分大小写)')
    x = input()
    if x.upper() == str1.upper():
        print('输入正确!')
        break
    else:
        print('输入错误!请重新输入。')
       
#输出
验证码: FVlily
请输入验证码:(不用区分大小写)
123
输入错误!请重新输入。
验证码: NPSPuW
请输入验证码:(不用区分大小写)
npspuw
输入正确!

2.6 字符串的格式输出对齐

str1 = 'life is short, you need python'
#  str1.center([len],'填充符号')
#  str1.ljuest([len],'填充符号')
#  str1.rjust([len],'填充符号')
#  str1.zfill([len])

print(str1.center(41,'-'))   #局中对齐,41表示占位长度,‘-’为填充字符
print(str1.ljust(41, '-'))   #左对齐
print(str1.rjust(41, '-'))   #右对齐
print(str1.zfill(41))        #右对齐,默认填充0
#输出
------life is short, you need python-----
life is short, you need python-----------
-----------life is short, you need python
00000000000life is short, you need python

2.7 删除指定字符

str1='\n\tMQWERTYUIOPASDFGHJKLZXCVBNM\t\n'
str1=str1.strip()   #删除两边指定字符,若不指定则删除常见换行符,制表符
print(str1)
str1=str1.lstrip('M')  #删除左边指定字符
print(str1)
str1=str1.rstrip('M')  #删除右边指定字符
print(str1)

#输出
MQWERTYUIOPASDFGHJKLZXCVBNM
QWERTYUIOPASDFGHJKLZXCVBNM
QWERTYUIOPASDFGHJKLZXCVBN

2.8 计数

str1 = 'life is short, you need python'
print(str1.count('o'))  #查找o出现的次数
print(str1.count('o',9,15))  #查找索引9-14中出现的次数

#输出
3
1

2.9 字符串搜索定位和替换

  • 定位
str1 = 'life is short, you need python'
print(str1.find('o'))    #返回字符串中第一次出现'o'的索引位置,从左往右
print(str1.find('o', 12, 17))    #返回字符串12-16中第一次'o'出现的索引位置
print(str1.find('z'))     #当查找不到时,返回值为-1
# print(str1.index('z'))	  #当查找不到时,会报错,其余与find相同
print(str1.rfind('o'))    #从右往左第一次出现的位置

#输出
10
16
-1
28
  • 替换
str1 = 'life is short, you need python'
#str1.replace('被替换字符',‘替换字符’,[n])  n为可以选参数,表示替换多少字符,默认为全部  
str1=str1.replace(' ', '@' , 2 )   #将字符串中的‘ ’前两个替换为‘@’
print(str1)

#输出
life@is@short, you need python

2.10 字符串条件判断

str1='123123abc'
str2='abc'
str3='123'
print(str1.isalnum())   #判断字符串是否由数字或字母组成
print(str2.isalpha())   #判断字符串是否仅由字母组成
print(str3.isdigit())   #判断字符串是否仅由数字组成

#输出
True
True
True

2.11 制表符的转化

str1 = 'abc\t123\tqwe\t1'
str1 = str1.expandtabs(1)    #将制表符转换为1个空格
print(str1)

#输出
abc 123 qwe 1

2.12 字符串的分割变换

#join(),将指定字符插入到元素之间
#split(),以指定字符分割,并且去除该字符
#partition(),以指定字符分割,但保留该字符

str1 = '123'
str2 = 'abc'
str1 = str1.join(str2)  # 在str1的每个元素之间插入str2字符串,返回为字符串
print(str1)

list1 = ['I ', ' LOVE ', ' PYTHON.']
print(''.join(list1))   #将列表快速转换为字符串

str1 = 'life is short, you need python'
list1 = str1.split('o'1)   #将字符串按 ‘o’分割,1表示分割几次,默认全部分割,split不保留分割字符
print(list1)				#返回为列表

str1 = 'life is short, you need python'
tp1 = str1.partition('o')    #将字符串按 ‘o’分割,只分割第一次出现的,从左往右
print(tp1)      #返回一个含有3个元素的元组,第一个元素为分割符左边的内容,第二个为分割符,第三个为分隔符                  右边的内容

#输出
a123b123c
I  LOVE  PYTHON.
['life is sh', 'rt, you need python']
('life is sh', 'o', 'rt, you need python')

2.13 ASCII和字符的转换

chr() digit —>alpha

ord() alpha —>digit

for i in range(ord('a'),ord('z')+1):
	print(chr(i),end=' ')
    
#输出
a b c d e f g h i j k l m n o p q r s t u v w x y z 

拓展

import string
print(string.ascii_letters)    #大小写字母
print(string.ascii_lowercase)  #大写字母
print(string.ascii_uppercase)  #小写字母
print('%o' % (17))    #将17转为八进制0o21
print('%x' % (17))	  #将17转换为十六进制0x11

#输出
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789
21
11

#验证码程序改进
import string
import random
while True:
    str1 = ''
    for i in range(6):
        x = random.random()
        if x > 0.7:
            str1 += random.choice(string.ascii_lowercase)
        elif x>0.4:
            str1 += random.choice(string.ascii_uppercase)
        else:
            str1+= str(random.choice(string.digits))
    print('验证码:',str1)
    print('请输入验证码:(不用区分不大小写)')
    x = input()
    if x.upper() == str1.upper():
        print('输入正确!')
        break
    else:
        print('输入错误!请重新输入。')
        
        
#输出结果
验证码: G2S1PJ
请输入验证码:(不用区分大小写)
G2s1pg
输入错误!请重新输入。
验证码: R3R706
请输入验证码:(不用区分大小写)
r3r706
输入正确!

语法格式

print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

等价于

print(value1, value2, valuen, sep=' ', end='\n', file=sys.stdout, flush=False)
for i in range(1,5):
    print(i,end=' ')
    print(i,end='$')
print('')
print(1,2,3,4,5,sep='$')
#输出
1 1$2 2$3 3$4 4$
1$2$3$4$5

print('%d' % 668)
name = '清隆绫小路'
age = 18
print('His name is %s, his age is %d.' % (name, age))
print('His name is ', name, ', his age is ', age, '.')
print('His name is ' + name + ', his age is ' + str(age) + '.')

2.14 格式化字符串

%号格式化
  • 占位符
格式描述
%d有符号的整数
%s字符串
%c字符及ASCII码
%o无符号八进制整数
%x无符号十六进制整数
%X无符号十六进制整数,后面ADCDEF会随我们输入大小写而确定大小写
%e%E科学计数法,浮点数
%f浮点数

%格式化字符串 用%匹配参数,注意个数一一对应

print('%d%%'%100)
#输出
100%
format格式化

(1)位置映射

print('姓名:{},年龄:{}'.format('飞鸟','18'))
#输出
姓名:飞鸟,年龄:18

(2)关键字映射

print('姓名:{},年龄:{},{addresss}'.format('飞鸟','18',addresss='日本东京'))
print("第一个元素是{0[0]},第二个元素是{0[1]},"
      "第三个元素是{0[2]};第四个元素是{1[0]},第五个元素是{1[1]}".format(('www.', 'google.', 'com'),
                                                      ('baidu.', 'com')))

一对应

print('%d%%'%100)
#输出
100%
format格式化

(1)位置映射

print('姓名:{},年龄:{}'.format('飞鸟','18'))
#输出
姓名:飞鸟,年龄:18

(2)关键字映射

print('姓名:{},年龄:{},{addresss}'.format('飞鸟','18',addresss='日本东京'))
print("第一个元素是{0[0]},第二个元素是{0[1]},"
      "第三个元素是{0[2]};第四个元素是{1[0]},第五个元素是{1[1]}".format(('www.', 'google.', 'com'),
                                                      ('baidu.', 'com')))

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值