[python3]string字符串

 字符串

1.字符串认识

#!/usr/bin/env python3
#-*- coding: utf-8 -*-

#字符串的使用
a = 'abcde'
b = "abcde"     #单引号和双引号作用一样,但是不能混用

c = '你好啊'
d = a +','+ c   #字符串的拼接,可以直接使用 +号链接
A = 5+8         #13
B = '5'+'8'     #58  字符串的拼接

s1 = "Let\'s go !"               #转义字符用反斜杠
s2 = "Let\\s go"                 #打印反斜杠本身
str1 = r'C:\now\python'          #C:\now\python
str2 = r'C:\now\python\'         #使用r时,末尾不能加\  SyntaxError: EOL while scanning string literal
str3 = r'C:\now\python' + '\\'   #C:\now\python\  想要最后加上反斜杠,可以使用这种方式

2.字符串多行输入 

#跨越多行的字符串
str1 = '''
小时不识月,
呼作白玉盘。
又疑瑶台镜,
飞在青云端。
'''
print(str1)
'''输出
小时不识月,
呼作白玉盘。
又疑瑶台镜,
飞在青云端。
'''


str2 = '小时不识月,\
呼作白玉盘。\
又疑瑶台镜,\
飞在青云端。'
print(str2)
#小时不识月,呼作白玉盘。又疑瑶台镜,飞在青云端。

str3 = ('小时不识月,'
'呼作白玉盘。'
'又疑瑶台镜,'
'飞在青云端。')
print(str3)
#小时不识月,呼作白玉盘。又疑瑶台镜,飞在青云端。




#分行输入
a= 3 < 4 and \
    1 < 2
print(a)          #True

b = ( 3 > 4 and
    1 < 2)
print(b)          #False


3.字符串下标 

str2 = 'abc_123'
print(str2[0])   #a
print(str2[7])   #IndexError: string index out of range

print(str2[-1])  #3
print(str2[-8])  #IndexError: string index out of range

4.字符串的内置方法( 字符串的方法及注释):

 capitalize()
  
  把字符串的第一个字符改为大写
  
  casefold()
  
  把整个字符串的所有字符改为小写
  
  center(width)
  
  将字符串居中,并使用空格填充至长度width的新字符串
  
  count(sub[,start[,end]])
  
  返回sub在字符串里边出现的次数,start和end参数表示范围,可选。
  
  encode(encoding='utf-8', errors='strict')
  
  以encoding指定的编码格式对字符串进行编码。
  
  endswith(sub[,start[,end]])
  
  检查字符串是否以sub子字符串结束,如果是返回True,否则返回False。start和end参数表示范围,可选。
  
  expandtabs([tabsize=8])
  
  把字符串中的tab符号(\t)转换为空格,如不指定参数,默认的空格数是tabsize=8。
  
  find(sub[,start[,end]])
  
  检测sub是否包含在字符串中,如果有则返回索引值,否则返回-1,start和end参数表示范围,可选。
  
  index(sub[,start[,end]])
  
  跟find方法一样,不过如果sub不在string中会产生一个异常。
  
  isalnum()
  
  如果字符串至少有一个字符并且所有字符都是字母或数字则返回True,否则返回False。
  
  isalpha()
  
  如果字符串至少有一个字符并且所有字符都是字母则返回True,否则返回False。
  
  isdecimal()
  
  如果字符串只包含十进制数字则返回True,否则返回False。
  
  isdigit()
  
  如果字符串只包含数字则返回True,否则返回False。
  
  islower()
  
  如果字符串中至少包含一个区分大小写的字符,并且这些字符都是小写,则返回True,否则返回False。
  
  isnumeric()
  
  如果字符串中只包含数字字符,则返回True,否则返回False。
  
  isspace()
  
  如果字符串中只包含空格,则返回True,否则返回False。
  
  istitle()
  
  如果字符串是标题化(所有的单词都是以大写开始,其余字母均小写),则返回True,否则返回False。
  
  isupper()
  
  如果字符串中至少包含一个区分大小写的字符,并且这些字符都是大写,则返回True,否则返回False。
  
  join(sub)
  
  以字符串作为分隔符,插入到sub中所有的字符之间。
  >>> str5 = 'Fishc' >>> str5.join('12345')  '1Fishc2Fishc3Fishc4Fishc5'
  ljust(width)
  
  返回一个左对齐的字符串,并使用空格填充至长度为width的新字符串。
  
  lower()
  
  转换字符串中所有大写字符为小写。
  
  lstrip()
  
  去掉字符串左边的所有空格
  
  partition(sub)
  
  找到子字符串sub,把字符串分成一个3元组(pre_sub,sub,fol_sub),如果字符串中不包含sub则返回(‘原字符串’, ’’, ’’)
  
  replace(old,new[,count])
  
  把字符串中的old子字符串替换成new子字符串,如果count指定,则替换不超过count次。>>> str7 = 'i love fishdm and seven' 
  >>> str7.replace('e','E',2)            'i lovE fishdm and sEven'
  rfind(sub[,start[,end]])
  
  类似于find()方法,不过是从右边开始查找。
  
  rindex(sub[,start[,end]])
  
  类似于index()方法,不过是从右边开始。
  
  rjust(width)
  
  返回一个右对齐的字符串,并使用空格填充至长度为width的新字符串。
  
  rpartition(sub)
  
  类似于partition()方法,不过是从右边开始查找。
  
  rstrip()
  
  删除字符串末尾的空格。
  
  split(sep=None,  maxsplit=-1)
  
  不带参数默认是以空格为分隔符切片字符串,如果maxsplit参数有设置,则仅分隔maxsplit个子字符串,返回切片后的子字符串拼接的列表。
  >>> str7.split ()   ['i', 'love', 'fishdm', 'and', 'seven']
  splitlines(([keepends]))
  
  按照‘\n’分隔,返回一个包含各行作为元素的列表,如果keepends参数指定,则返回前keepends行。
  
  startswith(prefix[,start[,end]])
  
  检查字符串是否以prefix开头,是则返回True,否则返回False。start和end参数可以指定范围检查,可选。
  
  strip([chars])
  
  删除字符串前边和后边所有的空格,chars参数可以定制删除的字符,可选。
  
  swapcase()
  
  翻转字符串中的大小写。
  
  title()
  
  返回标题化(所有的单词都是以大写开始,其余字母均小写)的字符串。
  
  translate(table)
  
  根据table的规则(可以由str.maketrans(‘a’,‘b’)定制)转换字符串中的字符。>>> str8 = 'aaasss sssaaa'
  >>> str8.translate(str.maketrans('s','b'))     'aaabbb bbbaaa'
  upper()
  
  转换字符串中的所有小写字符为大写。
  
  zfill(width)
  
  返回长度为width的字符串,原字符串右对齐,前边用0填充。
  
s = 'awin38573in0keo'
s1 = s.capitalize() #Awin38573in0keo
s2 = s.casefold()  #awin38573in0keo
s3 = s.swapcase()  #AWIN38573IN0KEO
s4 = s.center(20)  #  awin38573in0keo
s5 = s.count('in')  #2
s6 = s.encode(encoding='utf-8') #b'awin38573in0keo'
s7 = s.endswith('eo') # True
s9 = s.find('in')  #2
s9 = s.find('an')  #-1

str1 = 'ok'
str2 = str1.join('12345') #1ok2ok3ok4ok5

5.<鱼C论坛>

symbols = r'''`!@#$%^&*()_+-=/*{}[]\|'";:/?,.<>'''
chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
nums = '0123456789'

passwd = input('请输入需要检查的密码组合:')

# 判断长度
length = len(passwd)

while (passwd.isspace() or length == 0):
    passwd = input("您输入的密码为空(或空格),请重新输入:")

if length <= 8:
    flag_len = 1
elif 8 < length < 16:
    flag_len = 2
else:
    flag_len = 3

flag_con = 0

# 判断是否包含特殊字符
for each in passwd:
    if each in symbols:
        flag_con += 1
        break

# 判断是否包含字母
for each in passwd:
    if each in chars:
        flag_con += 1
        break

# 判断是否包含数字
for each in passwd:
    if each in nums:
        flag_con += 1
        break

        # 打印结果
while 1:
    print("您的密码安全级别评定为:", end='')
    if flag_len == 1 or flag_con == 1:
        print("低")
    elif flag_len == 2 or flag_con == 2:
        print("中")
    else:
        print("高")
        print("请继续保持")
        break

    print("请按以下方式提升您的密码安全级别:\n\
    \t1. 密码必须由数字、字母及特殊字符三种组合\n\
    \t2. 密码只能由字母开头\n\
    \t3. 密码长度不能低于16位'")
    break
    

6.format() 有两种参数: 位置参数,关键词参数 。 位置参数如下边的{0},{1},{2}. 关键词参数如下边的{a},{b],{c}

#format() 通过{}字段,通过位置参数,对字符串进行格式化整理
a0 = "{0} love {1}.{2}".format("i","fishC","com")
print(a0)  #i love fishC.com

a1 = "{a} love {b}.{c}".format(a="i",b= "fishc",c = "com")
print(a1) #i love fishc.com

#注意:如果综合位置参数和关键字参数一起使用,
# 那么位置参数必须在关键字参数之前,否则会报错。
a2 = "{0} love {b}.{c}".format("i",b= "fishc",c = "com")
print(a2) #i love fishc.com
a= '{{0}}'.format('badusijd')
print(a)
a0= '{{0}}'.format('不打印')
print(a0)
# {0} 为什么打印出来事{0}呢,因为这个{}和外边的{}相当于'\\'这种感觉
# 所以无论format后边是什么 都不会打印出来

a1 ='{0:.1f}{1}'.format(27.658,'GB')
print(a1) #27.7GB
# :表示格式化符号的开始

7. % 相当于翻译的感觉

a0 = '%c' % 97
print(a0) #a
a1 = '%c %c %c' % (97,98,99)
print(a1) #a b c
a2 = '%s' % 'I love you'
print(a2) #I love you
a3 = '%d + %d = %d' % (4,5, 4+5)
print(a3)

8.

字符串格式化符号含义

   符   号   说     明
     %c   格式化字符及其ASCII码【>>> '%c' %97        'a'】
     %s   格式化字符串
     %d   格式化整数
     %o   格式化无符号八进制数
     %x   格式化无符号十六进制数
     %X   格式化无符号十六进制数(大写)
     %f   格式化定点数,可指定小数点后的精度(小数点后6位)
     %e   用科学计数法格式化定点数
     %E   作用同%e,用科学计数法格式化定点数
     %g   根据值的大小决定使用%f活%e
     %G   作用同%g,根据值的大小决定使用%f或者%E

9. 格式化操作符辅助指令
                                                 

   符   号    说     明
     m.n    m是显示的最小总宽度,n是小数点后的位数
       -    用于左对齐
      +    在正数前面显示加号(+)
       #    在八进制数前面显示 '0o',在十六进制数前面显示 '0x' 或 '0X'
       0    显示的数字前面填充 '0' 取代空格

10.字符串转义字符含义
  

   符   号    说     明
       \'    单引号
       \"    双引号
       \a    发出系统响铃声
       \b    退格符
       \n    换行符
       \t    横向制表符(TAB)
       \v    纵向制表符
       \r    回车符
       \f    换页符
       \o    八进制数代表的字符
       \x    十六进制数代表的字符
       \0    表示一个空字符
       \\    反斜杠 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值