python字符串的用法

字符串的用法

#coding:utf-8
#字符串的三种风格
'''
print('hello world')
print("hello world")
print('''

''')
ch = '我'
print(ord(ch))  #ord只能处理单个字符

#字符串截取
mystr = '生活中的程序员真实写照、一款游戏一包烟,一台电脑一下午。一盒泡面一壶水,一顿能关一整天'
print(mystr[:]) #整个字符串
print(mystr[-15:-8])
print('notepad')
print(len('notepad'))   #字符串长度为7
print('---------','notepad'[1])
for i in 'notepad':
    print(i,end='')
mycmd='notepad'
print(mycmd[3])
print(mycmd[1:3])  #字符串的截取,1-3但不包括3
print(mycmd[1:8])  #字符串的截取,1-8但不包括8
print(mycmd[0:-1])
print(mycmd[-3:-1]) #正索引从0开始,负索引从-1开始
print('mycmd'*3)  #反复输如3次
mystr ='cmd0'
print(mystr[0])
#mystr[0]='A'
mystr = 'Amd'
print(mystr)
#字符串可以调到新的字符串地址,但是不可以改变常量字符串

#数据机构
#list简介
mylist = [1,2,3,4,5,6,7]
print(len(mylist))  #列表,容纳多个数据
mylist.append(8)    #增加数据
print(len(mylist))  #列表长
for data in mylist: #循环遍历列表
    print('-----',data)
print(mylist)

print(mylist[1:7])#索引截取,与字符串,正索引,负索引
print(mylist[4:-1])
print(mylist[:])#全部,不包含最后一个索引
print(mylist[:4])#默认不输入是开头
print(mylist[4:])#默认不输入是结尾
print(mylist*2) #乘法复制两次
print(mylist+mylist[4:6])   #加法列表叠加
#list可以被修改
list = [1,2,3]
list[1]=10  #list可以修改
print(list)

s = 'abcdefg'
print(s[::-1])#字符串倒写
print(s[::-3])#从倒是第一个开始每3个输出一个

#字符串赋值
mystr = 'calc'
print(mystr[1])
#mystr[1]='X' 字符串单个元素不可以赋值
mystr = 'xalc'  #字符串可以赋值新的常量字符串地址
#打印"calc"
print("\"calc\"")   #\'代表字符串中的'
print('ABCD\nFG')   #\n和\r不显示,换行作用

s = 'hello'
print(len(s))
#测量字符串长度用len

#字符在内存的编码
#ord函数可以看到字符的Unicode
s1 = 'hi,你好'
n = len(s)
for i in range(n):
    print(s1[i],ord(s1[i]))
#用程序测出"A-Z"和'a-z'的字符
c = 'ABCDEFGHIJKMNOPQRSTUVWXYZ'
c1 = 'abcdefghijkmnopqrstuvwxyz'
n = len(c)
for i in range(n):
    print(c[i],'---',ord(c[i]),c1[i],'---',ord(c1[i]), end='  ')
#总结;小写的a到z是97到122,大小的A到Z是65到90

#编码转为字符
#chr()函数可以将编码转换成符号或文字
a = chr(25105)
b = chr(20204)
c = chr(119)
d = chr(101)
print(a,b,c,d)
#5.字符串比大小
def compare(a,b):
    c = len(a)  #计算字符的长度
    d = len(b)
    if c<d:
        n = d
    elif c>d:
        n = c
    else:
        n = c
    for i in range(n):
        if a[i]>b[i]:
            return 1
        elif a[i]<b[i]:
            return -1
        elif a[i] == b[i]:
            return 0
        if m == n:
            return 0
        elif m>n:
            return 1
        else:
            return -1
print(compare("hi","wang"))

#4-1-1输入一个字符串,统计它包含的大小写字母的个数。

S = input('请输入英文')
n = len(S)
count = 0
xia = 0
for i in range(n):
    if ord(S[i]) >= 97 and ord(S[i]) <= 122:
        count += 1
    elif ord(S[i]) >= 65 and ord(S[i]) <=90:
        xia += 1
print("大写字母有{},小写字母有{}".format(count,xia))


#4-1-2输入一个字符串,统计它包含字母字符串和数字的个数
#s = input('请输入字符串')
#count = 0
#shu = 0
#xia = 0
#for i in range(len(s)):
#    if s[i]>='a' and s[i]<='z':
#        xia+=1
#    elif s[i]>='A' and s[i]<='Z':
#        count+=1
#    elif s[i]>='0' and s[i]<='9':
#        shu+=1
#print(shu,xia,count)
#4-1-3输入一个字符串,把他反向显示。
def reverseA(s):
    t = ''
    try:
        for i in range(len(s)-1,-1,-1):
            t = t+s[i]
    except Exception as err:
        print(err)
        return t

print(reverseA('redasf'))

s = 'sdfssdf'
print(len(s)-1)

#4-1-4输入一个字符串,去掉它左右多余的空格,如“   a bc "返回"a bc"
def trim(s):
    t = ''
    i = 0
    j = len(s)-1
    while i<=j and s[i] == ' ':
        i=i+1
        j = j - 1
    for k in range(i,j+1):
        t = t+s[k]
    return t
s = input("请输入字符串")
print(s,'length=',len(s))
t = trim(s)
print(t,'length=',len(t))
'''
# #字符串格式化
# c = 121
# print("今天是{:*^10d}".format(c))
'''
format格式有:
1. {:.2f}:保留小数点后两位
2. {:+/-.2f}:带符号保留小数点后两位
3. {:.0f}:不带小数
4. {:0>2d}:数字补零(填充左变,宽度为2)
5. {:x<4d}:数字补x(填充右边,宽带为4)
6. {:,}:以逗号分隔的数字格式
7. {:.2%}:百分比格式 
8. {:.2e}:指数记法
9. {:>10d}:右对齐(默认,宽度为10)
10.{:<10d}:左对齐(默认,宽度为10)
11.{:^10d}:中间对齐(宽度为10)
12.b d o x 分别是二进制,十进制,八进制,十六进制

num = 190
money = 2000
mystr = '和风成女神有%d个备胎,他花了%.2f元给女神买了手机'%(190,2000)
print(mystr)
#utf-8包含ACSII
#ACSII格式,没有中文,可以编译  utf-8站的空间较大
print(r'c\asfd\sfdsa\sadf\sadfasd\a')   #r节约时间,不用输入转义字符,特殊处理
print(u'sdfsadf')

#查看字符串帮助
print(dir(''))
mylist = dir("")    #dir遍历所有的属性返回的是一个列表list
print(mylist)    #[]包含了所有的函数,属性
for i in mylist:    #遍历打印
    print(help('\'\'.'+i))
'''
# #print(help("str".find))
# #字符串比较常见的函数
# mystr = 'hello python2 hello python3'
# print(mystr.capitalize())   #第一字符转换为大写
# print(mystr)
# #center(width,fillchar)
# #返回一个指定长度的宽度width 居中的字符串,fillchar为填充字符,默认为空
# mystr = '8888'
# for i in range(6,40,2):
#     for j in range((40-i//2),0,-1):
#         print(' ',end='')
#     print(mystr.center(i,'-'))
#
# mystr = 'hello python2 hello python3'
#
# #count 统计字符出现的次数
# print(mystr.count('he'))    #判断字符串出现的次数

#字符串常见的编码和解码
# b = bytes(1)    #bytes转换byte转换为二进制码,1字节
# print(b)    #\x16进制2^4=16 8位1个字节
# #1G = 1024mB=1024*1024KB=1024*1024*1024KB*8位
# a = bytes('中abc','utf-8')
# print(a)
# mystr = 'hello 中国'
# print(mystr.encode('utf-8'))    #encode返回二进制,用于写入文本
# print(b'hello '.decode('utf-8'))  #将二进制转换位文本
# #编码的容错行
# #utf-8一个汉字两个字节,另一个表示字节结束,一个字节表示开始
# a = bytes('中国你好abc','gbk')  #不同的编码大小不一样
# print(a)
#utf-8 两个字符表示汉字,一个字符汉字表示结束,3个字符
# print(bytes('我','utf-8'))
# print(bytes('我的','utf-8'))
# print(bytes('我的喔','utf-8'))
#gbk 两个字符表示一个汉字,没有结束
# print(bytes('我','gbk'))
# print(bytes('我的','gbk'))
# print(bytes('我的喔','gbk'))
# print(b'\xce\xd2\xb5\xc4\xe0\xb8'.decode('gbk'))
# #print(b'\xce\xd2\xb5\xc4\xe0\xb8'.decode('utf-8'))
# #decode,将二进制转化为字符串,指定编码格式
# print('你好中国'.encode('utf-8'))
# print(b'\xe4\xbd\xa0\xe5\xa5\xbd\xe4\xb8\xad\xe5\x9b\xbd'.decode('gbk','ignore'))   #"ignore"解码识别,强行解码
# print(type('hello'.encode('utf-8')))    #encode字符串转换为二进制,decode()二进制转换为字符串

# mster = 's2'    #\t转换为空格,默认八个,tabsize步长
# print(mster.expandtabs(tabsize=1))
'''
eval:只能处理字符串,字符串的数值或者表达式
exec:文本当语句执行

print('-'.join('ahgkhgjjk'))    #ahgkhgjik每个字符串之间插入一个字符串间隔
for i in range(5,50):
    print('8888'.rjust(i,'*'))

#按行切割
mystr = '''
# 十年生死两茫茫,写程序,到天亮。
# 千行代码,Bug何处藏。
# 纵是上线又怎样,朝令改,夕断肠。
# 领导每天新想法,天天改,日日忙。
# 相顾无言,唯有泪千行。
# 每晚灯火阑珊处,夜难寐,又加班。
'''
# splitlines() 按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表
# ,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。
mylist = mystr.splitlines(True) #包含True,换行两次,不包含换行一次
for date in mylist:
    print(date)
# mystr = 'A1021231231231231 # waefrwafawfa # www.asdfas'
# mystr = mystr.split('#')
# print(mystr)
print('hello china'.swapcase()) #把大小的字母改成小写,把小写的字母改成大写
print('Sfdafasdfsdf'.swapcase())
print('sadfasdfD'.swapcase())
print('AFAFADF'.swapcase())
print('123'.zfill(40))  #金融数据
'''
#翻译截取
#make
# mystr = 'hello python 我,我,你'
# table = str.maketrans('aeiou','12345')  #变成要翻译的对象,第一个参数为要改变的值,第二个为改变的值
# print(mystr.translate(table))   #翻译替换
#字符串的模板
from string import Template #string文件导入Template
print(type(Template))
mystr = Template('hi,$name 你是  $baby')
print(mystr.substitute(name='小明',baby='lovely baby'))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值