字符串与格式化

(一)编写代码,练习% format f三种字符串格式化方法
# 通过位置来填充字符串
'{0},{1},{2}'.format('a','b','c')
'a,b,c'
'{2},{1},{0}'.format('a','b','c')
'c,b,a'
# 通过key来填充字符串
print( 'Hello {name1} , I am {name2}'.format(name1='Kevin',name2='Tom'))
# 通过下标来填充字符串
names=['张三','李四']
print('你好{names[0]},我是{names[1]}。'.format(names=names))
(二)编写代码练习字符串常用方法
# find()、rfind()、index()、rindex()、count()
str="apple,peach,banana,peach,pear"
print(str.find('peach'))  #find()方法用来查找一个字符串在另一个字符串指定范围中首次出现的位置
print(str.rfind('peach'))  #rfind()方法用来查找一个字符串在另一个字符串指定范围中最后一次出现的位置
print(str.index('p'))   #index()方法用来返回一个字符串在另一个字符串指定范围中首次出现的位置
print(str.rindex('p'))  #rindex()方法用来返回一个字符串在另一个字符串指定范围中最后一次出现的位置
print(str.count('p'))   #count()方法用来返回一个字符串在当前字符串中出现的次数
# split()、rsplit()、partition()、rpartition()
str="apple,peach,banana,peach,pear"
print(str.split(","))   #split()方法分别用来以指定字符为分隔符,把当前字符串从左往右分隔成多个字符串,并返回包含分隔结果的列表
print(str.rsplit(","))  #rsplit()方法分别用来以指定字符为分隔符,把当前字符串从右往左分隔成多个字符串,并返回包含分隔结果的列表
print(str.partition(","))   #partition()用来以指定字符串为分隔符将原字符串分隔为3部分,即分隔符前的字符串、分隔符字符串、分隔符后的字符串,如果指定的分隔符不在原字符串中,则返回原字符串和两个空字符串。
print(str.rpartition(","))  #rpartition()用来以指定字符串为分隔符将原字符串分隔为3部分,即分隔符前的字符串、分隔符字符串、分隔符后的字符串,如果指定的分隔符不在原字符串中,则返回原字符串和两个空字符串。
""" 
不指定分割符的split()和rsplit()方法,则字符串中的
任何空白符号(空格、换行符、制表符等)都将被认为是
分隔符,并删除切分结果中的空字符串。
"""
str='hello world \n\n My name is Dong   '
print(str.split())
print(str.rsplit())
# 明确传递参数指定split()使用的分隔符时,保留切分得到的空字符串。
str='a,,,bb,,ccc'   #以逗号作为独立的分隔符
print(str.split(','))
str='a\t\t\tbb\t\tccc'  #以制表符作为独立的分隔符
print(str.split('\t'))
str='a\t\t\tbb\t\tccc'  #连续多个制表符被作为一个分隔符
print(str.split())
# split()和rsplit()方法指定最大分割次数
str="'\n\nhello\t\t world \n\n\n My name is Dong   "
print(str.split(None,1))    #不指定分隔符,使用空白字符作为分隔符
print(str.split(None,4))    #指定分割四次
print(str.split(maxsplit=6))    #指定最多分割六次
print(str.split(maxsplit=100))  #最大分隔次数大于可分隔次数时无效
# 字符串连接join
str=["apple","peach","banana","pear"]
print(','.join(str))    #以“,”作为连接符
print('.'.join(str))    #以“.”作为连接符
print('::'.join(str))    #以“::”作为连接符
# 将字符串重复指定次数,并使用指定的分隔符进行连接,结果字符串最后不带分隔符
def concat(str,num,separator):
    return separator.join([str]*num)

print(concat('good',5,','))
# lower()、upper()、capitalize()、title()、swapcase()
str="What is Your Name?"
print(str.lower())  #返回小写字符串
print(str.upper())  #返回大写字符串
print(str.capitalize()) #字符串首字母大写
print(str.title()) #每个单词的首字母大写
print(str.swapcase()) #大小写互换
# 查找替换replace(),类似于Word中的“全部替换”功能。
words=('测试','非法','暴力','话')
text='这句话里含有非法内容'
for word in words:
    if word in text:
        text=text.replace(word,'***')

print(text)
# maketrans()和translate()方法
table=''.maketrans('0123456789', '零一二三四伍陆柒捌玖') #创建映射表
str='2022年3月28日'
str.translate(table)    #按映射表进行替换
# strip()、rstrip()、lstrip()方法
str='  aabbccddeeff    '
print(str.strip()) #删除空白字符
str='aabbccddeeff'
print(str.strip('cc'))  #删除指定字符cc
print(str.rstrip('f'))  #删除字符串右端指定字符
print(str.lstrip('a'))  #删除字符串左端指定字符
str='aabbccddeeeffg'
print(str.strip('af'))    #字母f不在字符串两侧故不删除
print(str.strip('gaf'))     #删除字符串两侧的'g''a''f'字符
print(str.strip('gbaef'))   #删除字符串两侧的'g''b''a''e''f'字符
# 内置eval()函数
print(eval("1+3*6+5/4"))  #计算表达式的值
x=1
print(eval('x+3'))  #计算含变量的值
print(eval("{'name':'linux','age':18}"))    #字符串转字典
#成员判断关键字in
print('a' in 'abcde')
print('f' in 'abcde')
print('ac' in 'abcde') # 关键字in左边的字符串作为一个整体对待  
#字符串的乘法运算:字符串序列的重复
print('abcde '*3)
#startswith(t)、endswith(t)方法判断字符串是否以指定字符串开始或结束
str='Simple is better than complex'
print(str.startswith('Si'))    #检测整个字符串
print(str.startswith('Si',5))  #指定检测范围起始位置
print(str.startswith('Si',0,5))    #指定检测范围起始和结束位置
print(str.endswith('ex'))    #检测整个字符串
print(str.endswith('ex',5))  #指定检测范围起始位置
"""
center()、ljust()、rjust()方法返回指定宽度的新字符串,
原字符串居中、左对齐或右对齐出现在新字符串中,如果指定
宽度大于字符串长度,则使用指定的字符(默认为空格)进行填充。
"""
str='Hello Python!'
print(str.center(25))   #居中对齐,以空格进行填充
print(str.center(25,'='))   #居中对齐,以字符'='进行填充
print(str.ljust(25,'/'))    #左对齐,以字符'/'进行填充
print(str.rjust(25,'+'))    #右对齐,以字符'+'进行填充
# isalnum()、isalpha()、isdigit()、isdecimal()、isnumeric()、isspace()、isupper()、islower(),
str='1234abcd'
print(str.isalnum())    #测试字符串是否为数字或字母
print(str.isalpha())    #全部为英文字母时才返回True
print(str.isdigit())    #全部为数字时返回True
print(str.isdecimal())    #检查字符串是否只包含十进制字符
print('   '.isspace())    #检查字符串是否为空白字符
print(str.isupper())    #测试字符串是否为大写字母
print(str.islower())    #测试字符串是否为小写字母
#compress()和decompress()函数用于字节串的压缩和解压缩。
import zlib
str=('Python程序设计 '*3).encode()
print(len(x))
str_c=zlib.compress(str)
print(len(str_c))
str_d=zlib.decompress(str_c)
print(len(str_d))
(三)使用jieba对段落"人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。"进行分词并显示。
# 全匹配
import jieba
paragraph = jieba.cut("人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。", cut_all=True)
print(list(paragraph))  
(四)使用正则表达,找出"生财有道、极乐世界、情不自禁、愚公移山、魑魅魍魉、龙生九子、精卫填海、海市蜃楼、高山流水、卧薪尝胆、壮志凌云、金枝玉叶、四海一家、穿针引线、无忧无虑、无地自容、三位一体、落叶归根、相见恨晚、惊天动地、滔滔不绝、相濡以沫、长生不死、原来如此、女娲补天、三皇五帝、万箭穿心、水木清华、窈窕淑女"中AABC和ABAC类型的成员。
from re import findall
text ='''生财有道,极乐世界,情不自禁,愚公移山,魑魅魍魉,龙生九子,精卫填海,
海市蜃楼,高山流水,卧薪尝胆,壮志凌云,金枝玉叶,四海一家,穿针引线,无忧无虑,
无地自容,三位一体,落叶归根,相见恨晚,惊天动地,滔滔不绝,相濡以沫,长生不死,
原来如此,女娲补天,三皇五帝,万箭穿心,水木清华,窈窕淑女'''
pattern1 = r'((.).\2.)' #ABAC类型成员
pattern2 = r'((.)\2..)'   #AABC类型成员
for item in findall(pattern1,text):
    print(item[0],'\n')

for item in findall(pattern2,text):
    print(item[0])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值