python基础系列一:字符串

----数据类型简单介绍----

1.常用数据类型
int 整型
string 字符串
boolean 布尔型
list 列表
dict 字典
tuple 元组
2.可变数据类型:list,dict
不可变数据类型:int,string,tuple

----可变数据类型----
>>> a
[1, 2, 3, 4]
>>> id(a)----内存分配地址不变
140488352611576
>>> a.append(5)
>>> a
[1, 2, 3, 4, 5]
>>> id(a)
140488352611576

----不能强制进行类型转换----
>>> a="111aaa"
>>> a
'111aaa'
>>> int(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '111aaa'

>>> a='111' --带引号是字符串赋值
>>> a
'111'
>>> type(a)
<type 'str'>
>>> int(a) --强制转换为整型输出
111
>>> a --再次打印a的时候,还是字符串
'111'
>>> type(a)
<type 'str'>

----boolean数据类型----
>>> print 1==1 --两个等于号是比较,比较值是否相等,比较数据类型是否一致
True
>>> print 1=="1" --类型不一样
False
>>> bool(1==1) --布尔函数,比较判断
True
>>> a=bool(1==1)
>>> a
True

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

在python种,用引号括起来的都是字符串(可以是单引号,也可以是双引号)

虽然,字符串可以是单引号,也可以是双引号,但是如果出现混用,可能就会出错,如下例:

"I told my friend,'python is really useful' " #true
'I told my friend,"python is really useful" ' #true
'I told my friend,'python is really useful' '  #false

----字符串的引号----
#脚本如下:
print "abc"
print 'abc'
print "abc'" #要输出单引号,需要双引号括起来
print 'abc"' #要输出双引号,需要单引号括起来
print """ #多行注释用三个双引号
@"copy"
@'right'
"""
#执行结果如下:
[root@linux-1 ~]# python 1.py 
abc
abc
abc'
abc"

@"copy"
@'right'

----子字符串----

a="abc123"

b="abc"

b就是a的子字符串

----计算中文字符串长度----
>>> a="12" #长度2个字节
>>> len(a)
2
>>> a="李晶" #长度6个字节,每个中文字符占3个字节
>>> len(a)
6
>>> a=u"李晶" #转换为unicode码,长度就变为两个字节
>>> len(a)
2
>>> a="李晶"
>>> g=a.decode('utf-8') #第二中转换方式
>>> len(g)
2
>>> len(a)
6
>>>

-----转义符----
>>> a="adsf""  #想要输出adsf和双引号 报错
File "<stdin>", line 1
a="adsf""
^
SyntaxError: EOL while scanning string literal
>>>
>>> a = "asdf\"" #加转义符 \ 成功输出
>>> print a
asdf"

>>> print "ab\n"  #输出ab后换行
ab

>>> print "\n" #输出换行


>>> print r"\n" #输出\n,因为前面加了r,强制输出原来的字符串
\n
>>>

----字符串访问和查找----
类似于列表的方式,以切片的方法访问
>>> a="abcd" #定义字符串
>>> a[0] #切片位置从0开始
'a'
>>> print a[0],a[2] #打印第一个和第三个
a c
>>> print a[0:2] #打印第一个到第二个,最后位置是切片的最大数减一
ab
>>> print a[0:3]
abc
>>> print a[0:]
abcd
>>> print a[-1] #打印最后一个
d
>>> print a[len(a)-1]
d
>>> print a[:-1]
abc

----字符串连接----
>>> a="abc"
>>> b="cde"
>>> print a+b #最直接也是最浪费资源的方法,最好不要用,会产生临时的变量承接两个相加的结果
abccde

>>> print "hello abc %s fg" % b #占位符的方式,%s是字符串,%d是整型
hello abc cde fg

>>> ",".join([a,b]) #用函数最简洁
'abc,cde'
>>> "".join([a,b])
'abccde'
>>> b="+" #将加号赋值给变量b
>>> a=["1","2"]
>>> b.join(a) #把加号作为字符串连接
'1+2'
>>> c=b.join(a)
>>> print c
1+2

>>> a="my name {1} {0}" .format("lisonglin","is") #format方法的简单用法,花括号里面的数值是字符串的位置
>>> a
'my name is lisonglin'
>>> a="my name is {name},age is {age}" .format(name="lisonglin",age="35") #用变量来替代,更直接
>>> print a
my name is lisonglin,age is 35

----字符串修改----字符串本身不会被修改----
>>> a="abc"
>>> a.replace("b","B") #使用replace函数修改
'aBc'
>>> a #字符串本身不会被修改,不可变数据类型
'abc'
>>> b=a.replace("b","c") #需要把修改的字符串,重新赋值给b,完成修改
>>> a
'abc'
>>> b
'acc'

----常用字符串内置函数方法----

  1)str.count()  //返回该字符串中某个子串出现的次数
  2)str.find()   //返回某个子串出现在该字符串的起始位置
  3)str.lower()  //将该字符串全部转化为小写
  4)str.upper()  //转为大写
  5)str.split()  //分割字符串,返回字串串列表,默认以空格分割
  6)len(str)     //返回字符串长度
  7)int(str)     //转成整型
  8)float(str)     //转成浮点型
  举例如下:
  >>> str = 'Hello, world'
  >>> str.count('o')
  >>> 2
  >>> str.find('lo')
  >>> 3
  >>> str.lower()
  >>> 'hello, world'
  >>> str.upper()
  >>> 'HELLO, WORLD'
  >>> str.split()
  >>> ['Hello,', 'world']
  >>> str.split(',')
  >>> ['Hello', ' world']
  >>> len(str)
  >>> 13
  >>> str
  >>> 'Hello, world'
   >>> a = "545.2222"
 >>> float(a)
545.22220000000004
 >>> int(float(a))
545
  以上所有操作都不会改变字符串本身!
 
----重点方法详解--

字符串的join方法,如下:
#join是用来通过 某个字符串 拼接 一个可迭代对象的每个元素--->join(可迭代对象参数类型)
print('*'.join(name)) #将字符串中的每个元素都使用*号连接,执行结果:a*b*c*d*E*R*F*1*2*3,返回一个新的变量值
print('使用*号拼接后的name值:', name) #name字符串的内容未进行更改,执行结果:abcdERF123
nums = ['ybq', 'lhl', 'lsh']
print(','.join(nums)) #将列表转换为字符串,每个元素之间使用逗号连接,执行结果为:ybq,lhl,lsh
#另一种方法将列表转换为字符串
# nums = ['ybq', 'lhl', 'lsh']
# temp = ''
# for i in nums:
# temp = temp+i+',' #列表转换为字符串,强制类型转换,执行结果为:ybq,lhl,lsh
# print(temp.strip(','))

替换replace字符串,如下:
st = 'mysql is db mysql mysql mysql'
print(st.replace('mysql', 'oracle')) #将字符串中的mysql替换为oracle
print(st.replace('mysql', 'oracle', 1)) #替换的元素存在较多时,可以输入想替换的次数

查找find字符串,如下:
name = 'hello world is world'
print(name.find('world')) #查找字符串的索引
print(name.find('world', 3, 10)) #可以指定查找字符串的范围,3,15 是开始、结束的下标值,下标值顾头不顾尾
print(name.find('xxx')) #查找的字符串不存在时,返回结果为-1
print(name.rfind('world')) #查找字符串,从后往前查找,执行结果为:15

切割字符串spilt,返回结果类型为list,如下:
#切割字符串,返回的类型是list
name1 = 'zcl,py,zyz,ywq' #将字符串切割成list
name1_list = name1.split(',') #按照逗号分割字符串,返回结果为list,name1的值未改变
print(name1_list) #执行结果为list类型:['zcl', 'py', 'zyz', 'ywq']
print(name1.split()) #按照空格分割字符串,返回结果是list,只有一个元素,执行结果:['zcl,py,zyz,ywq']
print(name1.spilt('\n')) #按照换行符分割字符串


in方法
#in方法:判断内容是否存在字符串中
name = 'hello bei jing zao an '
print('hello' in name) #判断hello 是否存在name里,执行结果为True
print('shang hai ' in name) #判断 shanghai 是否存在name里,执行结果为False

not方法:
name = 'hello bei jing zao an ' #定义字符串
#not方法:返回表达式结果的'相反值'。如果表达式结果为真,则返回False
print('hello' not in name) #判断hello 不存在name里,执行结果为False
print('abc' not in name) #判断abc 不存在name里,执行结果为True

is方法:
#is 判断的是 内存地址是否相同
a = 'xiaoming'
b = 'xiaoming'
print(a is b ) #a和b的值相同,内存里存放时,指向的内存地址相同,指向结果为True
print(id(a))
print(id(b)) #可以通过id(变量名)这个方法,查看变量的内存地址

字符串的endswith、isalnum、isalpha方法:
name = 'hello world is world'
print(name.endswith('d')) #判断是否以u结尾,执行结果为布尔值,工作中的例子:可以判断图片是否以jpg结尾
print('ab123'.isalnum()) #判断输入的字符串是否包含数字和字母,判断密码是否包含数字和字母时,可以使用,返回结果为布尔值
print('abcdA'.isalpha()) #判断输入的字符串是否是英文字母,返回结果为布尔值

去除字符串的空格,如下:
#去除空格
print(' ab fs'.lstrip()) #默认去掉字符串左边的空格和换行,执行结果:ab fs
print('hello '.rstrip()) #默认去掉字符串右边的空格和换行,执行结果:hello
print('\nmysql abcd'.strip()) #默认去掉两边的空格和换行,执行结果:mysql abcd,中间的空格不可去除
print('mysqlmy'.strip('m')) #去除指定的字符串,例如:去除两边的m元素,执行结果:ysqlm y

字符串随机生成大小写字母、数字,用法如下:
import string
print(string.ascii_letters + string.digits) #输出所有的大小写字母+(0-9)的数字
print(string.ascii_letters) #输出大小写的英文字母,执行结果:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
print(string.ascii_lowercase) #输出小写英文字母,执行结果:abcdefghijklmnopqrstuvwxyz
print(string.ascii_uppercase) #输出小写英文字母,执行结果:ABCDEFGHIJKLMNOPQRSTUVWXYZ

转载于:https://www.cnblogs.com/lisonglin/p/10248045.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值