014 Python初学笔记--字符串

1.如何定义一个跨越多行的字符串

>>> #字符串是一首诗,含有多行
>>> str1='''我如果爱你
绝不学攀援的凌霄花
借你的高枝炫耀自己'''
>>> print(str1)
我如果爱你
绝不学攀援的凌霄花
借你的高枝炫耀自己

>>> str3='我如果爱你\n绝不学攀援的凌霄花\n借你的高枝炫耀自己'
>>> print(str3)
我如果爱你
绝不学攀援的凌霄花
借你的高枝炫耀自己

>>> #字符串太长,一行写不开时
>>> str2='我如果爱你\
绝不学攀援的凌霄花\
借你的高枝炫耀自己'
>>> print(str2)
我如果爱你,绝不学攀援的凌霄花,借你的高枝炫耀自己.

>>> str4=('I'
	  'love'
	  'you')
>>> print(str4)
Iloveyou

注:三重单引号和三重双引号在不赋值的情况下,用作多行注释。

2.file=open('F:\temp\readme.txt','r')表示以只读的方式打开'F:\temp\readme.txt'这个文本文件,但是事实上这个语句会报错,为什么?怎么修改?

会报错是因为在字符串中,我们约定‘\t’表示横向制表符,‘\r’表示回车符,因此并不会按照我们计划的路径打开文件。

修改的方法就是将文件路径中的‘\’转义。

>>> file=open('F:\temp\readme.txt','r')
Traceback (most recent call last):
  File "<pyshell#37>", line 1, in <module>
    file=open('F:\temp\readme.txt','r')
OSError: [Errno 22] Invalid argument: 'F:\temp\readme.txt'
>>> file1=open(r'F:\temp\readme.txt','r')   #转义方式①
>>> file2=open('F:\\temp\\readme.txt','r')  #转义方式②
>>> file1
<_io.TextIOWrapper name='F:\\temp\\readme.txt' mode='r' encoding='cp936'>

3.如何从字符串str1 = 'I love you'中提取子串‘love’

>>> str1='I love you'
>>> str1[2:6]
'love'

4.如果使用负数作为索引值进行分片操作,字符串str1 = 'I love you',你能目测出str1[-8:-4]的结果吗

>>> str1="I love you"
>>> str1[-8:-4]
'love'

5.字符串str1 = 'I love you',请问str1[2:-4]会显示什么样的内容

>>> str1[2:-4]
'love'

注:字符串的索引可正可负,例如‘python’这个字符串,正数的索引唯一,但是负数的索引不唯一:

字符串:p   y   t   h   o   n
索引值:0   1   2   3   4   5
       -6  -5  -4  -3  -2  -1
       -12 -11 -10 -9  -8  -7
       ...

6.将字符串str2='i543 iill1i3oii3vnske00  ienykdfoioou'还原为有意义的字符串,str2[::4]的运行结果是什么你能看出来吗?

>>> str2='i543 iill1i3oii3vnske00  ienykdfoioou'
>>> str2[::4]
'i love you'

注:str2[::4]表示从字符串的第一位开始,步长为4,及从第一位开始,以索引值每次+4的方式输出当前索引值指向的字符。如果步长为负数,表示从最后一位开始:

>>> str4='12345678'
>>> str4[::-1]
'87654321'
>>> str4[::-2]
'8642'

7.字符串与元组一样,一旦定义,不能修改。(要实现字符串的修改,可以使用分片对字符串重新拼接)

>>> str1='catch me if you can'
>>> str1=str1[:3]+'  '+str1[3:]#修改字符串
>>> str1
'cat  ch me if you can'

拓展练习编写密码安全性检查脚本:

要求:
1.低级密码要求:密码由单纯的数字和字母组成;长度不超过8位;
2.中级密码要求: 密码必须由数字、字母或特殊字符(仅限:+-*/)任意两种组合;长度大于8位
3.高级密码要求:密码必须由数字、字母及特殊字符(仅限:+-*/)三种组合;密码只能由字母开头;长度不少于16位
symbols=r'''+-*/'''     #特殊字符
letter='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' #字母
num='1234567890'         #数字
while 1:
    password=input("请输入密码:")
    while password.isspace() or len(password)==0:
        password=input("密码不能只含空格或者为空,请重新输入密码:")

    #判断密码长度    
    length=len(password)
    if length<=8:
        flag_len=1
    elif length<16:
        flag_len=2
    else:
        flag_len=3
        
    flag_password=0    #用来判断密码中的字符种类

    #判断密码是否含有字母
    for ch in password:
        if ch in letter:
            flag_password+=1
            break;
        
    #判断密码是否含有数字
    for ch in password:
        if ch in num:
            flag_password+=1
            break

    #判断密码是否含有特殊字符
    for ch in password:
        if ch in symbols:
            flag_password+=1
            break

    #打印结果
    if flag_len==1 or flag_password==1:
        print("密码安全级别:低")
    elif  flag_len==2 or flag_password==2:
        print("密码安全级别:中")
    else:
        print("密码安全级别:高")

字符串各种内置函数的使用方法+实例:

https://blog.csdn.net/beautiful77moon/article/details/86598941

字符串的格式化的使用方法+实例:

https://blog.csdn.net/beautiful77moon/article/details/86632493

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值