String的运用和操作方式

字符串

什么是字符串?

字符串是python中最常用的数据类型,我们可以使用引号""来创建字符串,事实上,再python中加了引导的字符都被认为是字符串!

有四种赋值方式
name="aaa"
age='12'
www="""wyt"""
aaa='''aan'''
print(name,age,www,aaa)
print(type(name),type(age),type(www),type(aaa))

多引号什么作用呢?作用就是多行字符串必须用多引号

mag="""
aaaa
xxx
aasas
aaaa
"""
print(mag)

字符串运算及操作

数字可以进行加减乘除运算,字符串呢?只能进行“相加”和“乘除”运算。

(1)拼接(+)

a="Hello"
b="Python"
print(a+b)

注意,字符串的拼接只能是双方都是字符串,不能跟数字或其他类型拼接

错误方式
age=5000
nema="ws"
print(age+nema)

2.重复

a="Hello"
print(a*3)
HelloHelloHello
[Finished in 0.2s]

3.字符串索引([]以及切片([::])

#注意事项:空格也算一个字符
#元素查找:从左往右数从0开始 或者 从右往左数从-1开始
#########0123456789012345678901234567
a="life is short, I use python"
print(len(a))
#索引
print(a[0])
#查找多个元素
print(a[0:4])
#查找间隔元素
print(a[5:13:2])
#从负数开始取值
print(a[::-1])
#切片
print(a[:13])#从索引值为0开始到第十二个元素
print(a[15:])#从索引值15开始到最后的元素
print(dir())#查找当前所有的变量名
#结果:27 
#结果:l  
#结果:life
#结果:i hr
#结果:nohtyp esu I ,trohs si efil
#结果:life is short
#结果:I use python

(4)大小写转换

  • str.lower() 转小写

  • str.upper() 转大写

  • str.swapcase() 大小写对换

  • str.capitalize() 字符串首为大写,其余小写

  • str.titl() 以分隔符为标记,首字符为大写,其余为小写

    应用

不区分大小写
 input_str="AbcA"
 aa=input("请输入")
 if aa.lower()==input_str.lower():
 	print("输入正确")
 else:
 	print("输入错误")

(5)字符串格式输出对齐

  • str.center() 居中

  • str.ljust() 左对齐

  • str.rjust() 右对齐

  • str.zfill()

    a="Life is short,I use python"
    print(a.center(35,'*'))
    *****Life is short,I use python****
    #返回一个元字符居中,并使用空格填充长度 width的新字符
    print(a.ljust(35,'*'))
    Life is short,I use python*********
    #返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串
    print(a.rjust(35,'*'))
    *********Life is short,I use python
    #返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串
    print(a.zfill(35))
    000000000Life is short,I use python
    #返回长度为width 的字符串,原字符串 string 右对齐,前面填充0,只有一个参数
    

(6)删除指定字符

  • str.lstrip()删除左边指定字符

  • str.rstrip()删除右边指定字符

  • str.strip()删除右左两边边指定字符

    a="*****Life is short,I use python****"
    print(a.lstrip("*"))
    print(a.rstrip("*"))
    print(a.strip("*"))
    结果:
    Life is short,I use python****
    *****Life is short,I use python
    Life is short,I use python
    

    (7).计数

    =COUNTIF(B2:B31, “>=30”)/COUNT(B2:B31)

a="Life is short,I use python"
print(a.count('i'))
# 返回str 在 string 里面出现的次数
print(a.count('i',4,8))
# 在索引值为[4,8) 的范围内 str 出现的次数
结果:
2
1

(8)字符串搜索定位与替换

  • str.find()

    和find() 方法一样,只不过如果str不在string中会报一个异常

a="Life is short,I use python"
print(a.index('e'))
print(a.index('e',18))
print(a.index('w')) 没有找到就报异常
结果:
3
Traceback (most recent call last):
18
  • str.replace() 替换

    a="Life is short,I use python"
    print(a.replace('I use','You need'))
    print(a.replace('t','T'))
    print(a.replace('t','T',1))
    结果:
    Life is short,You need python
    Life is shorT,I use pyThon
    Life is shorT,I use python
    [Finished in 0.1s]
    

(9)字符串条件判断

  • isalnum(),字符串由字母或数字组成,
  • isalpha(),字符串只由字母组成,
  • isdigit(),字符串只由数字组成
In [1]: a = "abc123"

In [2]: b = "ABC"

In [3]: c = 123

In [4]: a.isalnum()
Out[4]: True

In [5]: a.isalpha()
Out[5]: False

In [6]: a.isdigit()
Out[6]: False

In [7]: b.isalnum()
Out[7]: True

In [8]: b.isalpha()
Out[8]: True

In [9]: b.isdigit()
Out[9]: False>>> str = '01234'
 
>>> str.isalnum()                #是否全是字母和数字,并至少有一个字符
True
>>> str.isdigit()                #是否全是数字,并至少有一个字符
True      
 
 
>>> str = 'string'
 
>>> str.isalnum()                  #是否全是字母和数字,并至少有一个字符
True
>>> str.isalpha()                  #是否全是字母,并至少有一个字符 
True
>>> str.islower()                  #是否全是小写,当全是小写和数字一起时候,也判断为True
True
 
>>> str = "01234abcd"
 
>>> str.islower()                  #是否全是小写,当全是小写和数字一起时候,也判断为True
True
 
>>> str.isalnum()                  #是否全是字母和数字,并至少有一个字符
True
 
>>> str = ' '
>>> str.isspace()                  #是否全是空白字符,并至少有一个字符
True
 
>>> str = 'ABC'
 
>>> str.isupper()                  #是否全是大写,当全是大写和数字一起时候,也判断为True
True
 
>>> str = 'Aaa Bbb'
 
>>> str.istitle()                  #所有单词字首都是大写,标题 
True
 
 
>>> str = 'string learn'
 
>>> str.startswith('str')                 #判断字符串以'str'开头
True
 
>>> str.endswith('arn')                      #判读字符串以'arn'结尾
True

(10).制表符转化

str.expandtabs()

a="L\tife is short,I use python"
print(a.expandtabs())
# 默认将制表符转化为8个空格
print(a.expandtabs(4))
# 加上参数,将制表符转化为对应个数的空格
结果:
L       ife is short,I use python
L   ife is short,I use python

(11)ASCII码和字符的转化

  • chr():用一个范围在range(256)内的(就是0~255)整数作参数,返回一个对应的字符。
  • ord():将一个ASCII字符转换为对应的数字
chr(65)
#结果:'A'
ord('a')
#结果:97

(12)字符串分割变换

  • join() 将指定字符插入新元素之间
  • split()以指定字符分隔序列且去除该字符
  • partition() 以指定字符分隔序列且包含该字符
>>> str="learn string"
>>> '_'.join(str)
'l_e_a_r_n_ _s_t_r_i_n_g'
>>> li=["learn","string"]
>>> '_'.join(str)
'l_e_a_r_n_ _s_t_r_i_n_g'
>>> '_'.join(li)
'learn_string'
>>> str.split('n')
['lear', ' stri', 'g']
>>> str.split('n',1)
['lear', ' string']
>>> str.rsplit('n')
['lear', ' stri', 'g']
>>> str.splitlines()
['learn string']
>>> str.partition('n')
('lear', 'n', ' string')
>>>

补充:

string模块

查看:

>>> import string
>>> dir(string)
['Formatter', 'Template', '_ChainMap', '_TemplateMetaclass', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_re', '_string', 'ascii_letters', 'ascii_lowercase', 'ascii_uppercase', 'capwords', 'digits', 'hexdigits', 'octdigits', 'printable', 'punctuation', 'whitespace']
>>> string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.ascii_lowercase
'abcdefghijklmnopqrstuvwxyz'
>>> string.ascii_uppercase
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.capwords('hUNAN yingxiao colllega')
'Hunan Yingxiao Colllega'
>>> string.digits
'0123456789'
>>> string.hexdigits
'0123456789abcdefABCDEF'
>>> string.octdigits
'01234567'
>>> string.printable
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
>>> string.punctuation
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
>>>

"%"是Python风格的字符串格式化操作符,非常类似C语言里的printf()函数的字符串格式化(C语言中也是使用%)。

下面整理了一下Python中字符串格式化符合:

格式化符号说明
%c转换成字符(ASCII 码值,或者长度为一的字符串)
%r优先用repr()函数进行字符串转换
%s优先用str()函数进行字符串转换
%d / %i转成有符号十进制数
%u转成无符号十进制数
%o转成无符号八进制数
%x / %X转成无符号十六进制数(x / X 代表转换后的十六进制字符的大小写)
%e / %E转成科学计数法(e / E控制输出e / E)
%f / %F转成浮点数(小数部分自然截断)
%g / %G%e和%f / %E和%F 的简写
%%输出% (格式化字符串里面包括百分号,那么必须使用%%)

这里列出的格式化符合都比较简单,唯一想要强调一下的就是"%s"和"%r"的差别。

格式化操作符

>>> a=15
>>> print(("%d to hex is %x") % (a,a))
15 to hex is f
>>> "%x" % 15
'f'
>>> "%f" % 15
'15.000000'
>>> "%e" % 15000
'1.500000e+04'
>>> "%d" % 100
'100'
>>> "%d%%" % 100
'100%'
>>>

看个简单的代码:

name=input("name:")
age=input("age:")
job=input("job:")
hobbie=input("hobbie:")

info='''
---info of%s---
Name :\t %s
Age  :\t %s
job  :\t %s
Hobbie:\t %s
------end------
'''%(name,name,age,job,hobbie)
 #这行的%号就是把前面的字符串与括号后面的变量关联起来
print(info)


列表

列表是python中的基础数据类型之一,其他语言中也有类似于列表的数据类型,比如js中叫数组,他是以[]括起来,每个元素以逗号隔开,而且他里面可以存放各种数据类型比如:

li = [‘alex’,123,Ture,(1,2,3,’wusir’),[1,2,3,’小明’,],{‘name’:’alex’}]

列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据,32位python的限制是 536870912 个元素,64位python的限制是 1152921504606846975 个元素。而且列表是有序的,有索引值,可切片,方便取值。

特点: 是一个有序的,可以重复的序列,可变类型。

1.创建一个空列表

>>> list1=[]
>>> print(type(list1))
<class 'list'>
>>>

2.创建一个有多个值的列表,每个值用逗号隔开

lit1=[18,25,16,22,28]

列表也可以存放不同类型的元素。

lst2=[18,"str",[1,2,3],(66,67),{'name':'Tom','age':18}]

4.列表的拼接

lisst + list

5.列表的重复

list * 3

列表索引和切片

>>> lst2=[18,"str",[1,2,3],(66,67),{'name':'Tom','age':18}]
>>> len(lst2)
5
>>> lst2[0]
18
>>> lst2[3]
(66, 67)
>>> lst2[3:]
[(66, 67), {'name': 'Tom', 'age': 18}]
>>> lst2[0::2]
[18, [1, 2, 3], {'name': 'Tom', 'age': 18}]
>>>

列表 :

 names=['a','b','c','d']

1.增加

append(),extend(),insert()

  • 1)append(),增加到最后
>>> names = ['a','b','c','d']
>>> names.append('e')
>>> names
['a', 'b', 'c', 'd', 'e']
>>> names = ['a','b','c','d']
>>> names.append([1, 2, 3])
>>> names
['a', 'b', 'c', 'd', [1, 2, 3]]
  • 2)extend(),迭代的去增
>>> names = ['a', 'b', 'c', 'd']
>>> place = ['beijing', 'shandong', 'usa']
>>> names.extend(place)
>>> names
['a', 'b', 'c', 'd', 'beijing', 'shandong', 'usa']
>>>
  • 3)insert(),按照索引去增加
>>> names = ['a', 'b', 'c', 'd']
>>> names.insert(2,'devilf')
>>> names
['a', 'b', 'devilf', 'c', 'd']
  • 4)其他的插入方法:
>>> names[3] = 'lebron'
>>> names
['a', 'b', 'devilf', 'lebron', 'd']

2.删除

pop,remove,del,cleaer

  • 1)pop()
>>> names=['a','b','c','d']
>>> names.pop()#如果没有指定下标,则默认会删除最后一个元素
'd'
>>> names
['a', 'b', 'c']
>>> names.pop(2)#指定索引时,就会删除索引对应的元素
'c'
>>> names
['a', 'b']
>>>
  • 2) remove() 按照元素删除
>>> names=['a','b','c','d','f','e']
>>> names.remove('e')
>>> names
['a', 'b', 'c', 'd', 'f']
>>>
  • 3) del
>>> names=['a','b','c','d','f','e']
>>> del names[4]
>>> names
['a', 'b', 'c', 'd', 'e']
>>>
  • 4) clear()
>>> names=['a','b','c','d','f','e']
>>> names.clear()
>>> names
[]

3.改

>>> li=['a','b','c','d']
>>> li[1]='cc'
>>> li
['a', 'cc', 'c', 'd']
>>> li[0:2]=['aa','bb']在所有02之间 包头不包尾
>>> li
['aa', 'bb', 'c', 'd']
>>>

4.查

切片去查,或者,循环去查

  • 索引,切片,遍历

其他操作:

1.查找元素所在位置:index()

>>> names=['a','b','c','d','f','e']
>>> names.index('c')
2
>>>

2.统计元素的次数:count()

>>> names=['a','b','c','d','f','e']
>>> names.append('d')
>>> names.count('d')
2

3.反转:reverse()

>>> names=['a','b','c','d','f','e']
>>> names.reverse()
>>> names
['e', 'f', 'd', 'c', 'b', 'a']
>>>

4.排序:sort() 按照ascii码来进行排序

>>> names=['a','b','c','d','e']
>>> names.insert(3,'&&')
>>> names
['a', 'b', 'c', '&&', 'd', 'e']
>>> names.sort()
>>> names
['&&', 'a', 'b', 'c', 'd', 'e']
>>>
>>> names.sort(reverse=True)
>>> names
['e', 'd', 'c', 'b', 'a', '&&']
>>>

5.对列表进行切片处理

  • 1)列表所有的元素
>>> names=['a','b','c','d','e']
>>> names[::]
['a', 'b', 'c', 'd', 'e']
>>>
  • 2)列出最后一个元素,从中间位置开始,列出后面所有的元素
>>> names=['a','b','c','d','e']
>>> names[-1]
'e'
>>>
names=['a','b','c','d','e']
>>> a=int(len(names)/2)
>>> names[a:]
['c', 'd', 'e']
>>>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值