字符串的数据类型转换及内置方法

类型转换

类型转换是python解释器提供的,直接就可以使用的方法。

str可以转换所有基本数据类型

# int  把整型转换成字符串并打印转换后的类型
print(str(11), type(str(11))) # float 把浮点型转换成字符串并打印转换后的类型
print(str(11.11), type(str(11.11))) # list 把列表转换成字符串并打印转换后的类型
print(str([1, 2, 3, 4]), type(str([1, 2, 3, 4]))) # dict 把字典转换成字符串并打印转换后的类型
print(str({'name': 'jason'}), type(str({'name': 'jason'}))) # tuple 把元组转换成字符串并打印转换后的类型
print(str((1, 2, 3, 4)), type(str((1, 2, 3, 4)))) # set 把集合转换成字符串并打印转换后的类型
print(str({1, 2, 3, 4}), type(str({1, 2, 3, 4}))) # bool 把布尔型转换成字符串并打印转换后的类型
print(str(True), type(str(True)))

内置方法

数据类型的内置方法是数据类型通过句点的方式可以直接调用出来的方法(每个类型都有自己的内置方法)

优先掌握的方法

s1 = 'hello world'

# 1.索引取值
print(s1[0]) # h # 2.切片操作
print(s1[2:4]) # ll (顾头不顾尾,取出2到3的所有字符)
#2.1反向切片
print(s1[::-1]) # dlrow olleh (-1表示从右往左依次取值) # 3.步长
print(s1[2:9:1]) # llo wor (第三个参数是步长 默认是1 依次获取)
print(s1[2:9:2]) # lowr (间隔一个取一个)
# 索引取切片扩展
print(s1[-1]) # d (获取最后一个字符)
print(s1[-1:-5:-1]) # dlro (第三个参数还可以控制索引的方向)
print(s1[-5:-1]) # worl # 4.统计字符串中字符的个数
print(len(s1)) # 11
'''获取字符串的长度,即字符的个数,但凡存在于引号内的都算作字符''' # 5.成员运算 in 和 not in
print('ll' in s1)
print('tony' not in s1 )

# 6.strip移除字符串首位指定的字符(使用频率较高)
name = ' jason '
print(len(name))
res = name.strip() # 默认移除字符串首尾的空格
print(res, len(res)) name1 = '$$$$jas$on$$$$'
print(name1.strip('$')) #括号内指定字符,移除首尾指定的字符,
username = input('username>>>>:').strip()
if username == 'jason':
print('我想去干饭了!!!') # 7.按照指定的字符切割字符串(切分split\rsplit)
data = 'jason|123|DBJ'
print(data.split('|')) # ['jason', '123', 'DBJ'] name, pwd, hobby = data.split('|') # 解压赋值 print(data.split('|', maxsplit=1)) # ['jason', '123|DBJ']
'''
split会按照从左到右的顺序对字符串进行切分,可以指定切割次数
rsplit方向刚好与split相反,从右往左切割,也可以指定切割次数
'''
print(data.rsplit('|', maxsplit=1)) # ['jason|123', 'DBJ']
"""split方法 切割 完得到的结果是 列表 数据类型"""
# 7.1 括号内不指定字符,默认以空格作为切分符号
str3='hello world'
print(str3.split()) # ['hello', 'world'] # 8.循环
str5 = '今天你好吗?'
for line in str5: # 依次取出字符串中每一个字符
print(line)
''' 结果:






'''

字符串除了有上面那些我们必须要熟练掌握的方法以外还有一些我们需要掌握的其他方法,让我们学起来吧~

需要掌握的方法

strip, lstrip, rstrip

'''移除字符串首尾的指定字符  可以选择方向'''

s1 = '$$$jason$$$'
print(s1.strip('$')) # jason
print(s1.lstrip('$')) # jason$$$ left--左边
print(s1.rstrip('$')) # $$$jason right--右边

lower, upper, islower, isupper

'''大小写相关操作'''

s2 = 'JaSoN666Sb'
print(s2.lower()) # 将所有的英文字母变为小写 jason666sb
print(s2.upper()) # 将所有的英文字母变为大写 JASON666SB
print(s2.islower()) # 判断字符串中所有的英文字母是否是纯小写 结果是布尔值
print(s2.isupper()) # 判断字符串中所有的英文字母是否是纯大写 结果是布尔值
插入一个小知识(图片验证码)
'''图片验证码:由一串有数字、大写字母、小写字母组成'''

# 问:为什么以前的验证码大小写不能忽略,而现在的验证码却可以忽略大小写,是如何实现的

code = 'JaSOn6'
print('这是返回给用户的图片验证码:%s' % code)
user_code = input('请输入验证码>>>:').strip()
if code.lower() == user_code.lower(): # 验证码忽略大小写-->只需要统一转大写或者小写即可
print('验证码正确')
else:
print('验证码错误')

startswith, endswith

'''判断字符串的开头或者结尾是否是指定的字符'''

s3 = 'jason kevin jason tony 666'
# startswith()判断字符串是否以括号内指定的字符开头,结果为布尔值True或False
print(s3.startswith('j')) # True
print(s3.startswith('jason')) # True
print(s3.startswith('tony')) # False
# endswith()判断字符串是否以括号内指定的字符结尾,结果为布尔值True或False
print(s3.endswith('6')) # True
print(s3.endswith('666')) # True
print(s3.endswith('jason')) # False

格式化输出之format

方式1 占位符:%s %d,在传值时,必须严格按照位置与%s一一对应

方式2 format方法(不依赖位置的传值方式)

# 方式1: 跟占位符一致,使用 {} 来占位
print('my name is {} my age is {}'.format('jason', 18))
# my name is jason my age is 18 # 方式2: 把format传入的多个值当作一个列表,根据索引取值,索引位可以‘反复使用’
print('my name is {0} my age is {1}'.format('jason', 18))
# my name is jason my age is 18
print('my name is {0} {0} {0} my age is {0} {1}'.format('jason', 18))
# my name is jason jason jason my age is jason 18 # 方式3:指名道姓!
# format括号内的数据在传参数时完全可以打乱顺序,但仍然能指名道姓地为指定的参数传值
print('my name is {name} my age is {age} {pwd} is password'.format(name='jason', age=18, pwd=123))
# my name is jason my age is 18 123 is password print('my name is {name} {name} my age is {age} {age} {pwd} is password'.format(name='jason', age=18, pwd=123))
# my name is jason jason my age is 18 18 123 is password (没错,它也可以重复使用) # 方式4:直接使用已经出现过的变量
name = 'jason'
age = 18
print(f'my name is {name} my age is {age}')
# my name is jason my age is 18 name = 'jason'
age = 18
print(f'my name is {name} {name} my age is {age} {age}')
# my name is jason jason my age is 18 18 (没错,它也可以重复使用)

拼接字符串(+ * join)

s1 = '三月不努力 四月变垃圾'
s2 = '年少不努力 妄为少年人'
print(s1 + s2) # 如果字符串很大 加号效率较低
# 三月不努力 四月变垃圾年少不努力 妄为少年人
print(s1 * 10) # 乘号之后的数字是重复次数 '''join:按照指定的分隔符进行拼接,拼接的结果为字符串'''
print('|'.join(s1)) # 三|月|不|努|力| |四|月|变|垃|圾
print('$'.join(['jason', 'kevin', 'justin', 'tony'])) # jason$kevin$justin$tony '''join方法相当于是将括号内的元素进行了for循环''' l1 = [11, 'jason', 'kevin']
print('|'.join(l1)) # join的元素必须都是字符串才可以, 否则报错

替换字符串中指定的字符(replace)

s6 = 'jason is DSB DSB DSB DSB jason jason jason'
# 用新的字符替换字符串中旧的字符
# 将jason替换成老刘
print(s6.replace('jason', '老刘')) # 默认一次性替换所有 # 指定替换的个数
print(s6.replace('jason', '老刘', 2)) # 通过数字控制替换的个数 从左往右
'''很多文本编辑器里面的替换功能 就可以使用replace完成'''

判断字符串中是否是纯数字(isdigit)

# 判断字符串是否是纯数字组成,返回结果为True或False
s7 = 'jason123'
print(s7.isdigit()) # False
print('123'.isdigit()) # True
print('123.21'.isdigit()) # False
score = input('score>>>:')
if score.isdigit():
score = int(score)
else:
print('学习有时枯燥有时好玩儿')

哇!!学习了那么多的关于字符串的方法了呀~

但是,还有哦,现在来看看一些需要我们了解的方法吧~

需要了解的方法

查找指定字符对应的索引值

s1 = 'jason justin kevin tony'
# find:从指定范围内查找子字符串的起始索引,找得到则返回数字1,找不到则返回-1
print(s1.find('s')) # 2 从左往右查找 查找一个就结束
print(s1.find('k', 1, 9)) # -1 意思是没有找到 # index:同find,但在找不到时会报错
print(s1.index('s')) # 2
print(s1.index('k', 1, 9)) # 找不到直接报错 不推荐使用 # count:统计字符串在大字符串中出现的次数
msg = "hello everyone"
print(msg.count('e')) # 统计字符串e出现的次数
# 4
print (msg.count('e',1,6)) # 字符串e在索引1~5范围内出现的次数
# 1

文本位置改变

name = 'tony'
print(name.center(30, '-')) # 总宽度为30 将tony居中显示
print(name.ljust(30, '*')) # 总宽度为30 tony靠对齐显示
print(name.rjust(30, '$')) # 总宽度为30 tony右对齐显示
print(name.zfill(50)) # 总宽度为50,字符串右对齐显示,不够用0填充(zero 零)

特殊符号

斜杠与一些英文字母的组合会产生特殊的含义

print('ja\tson\nke\avin')
'''如果想取消它们的特殊含义 可以在字符串的前面加一个字母r'''
# print(r'ja\tson\nke\avin') name = 'tony\thello' # \t表示制表符(tab键)
print(name)
# tony hello
print(name.expandtabs(1)) # 修改\t制表符代表的空格数
# tony hello

captalize:首字母大写

message = 'hello everyone nice to meet you!'
message.capitalize()
# Hello everyone nice to meet you!

swapcase:大小写翻转

message1 = 'Hi girl, I want make friends with you!'
message1.swapcase()
# hI GIRL, i WANT MAKE FRIENDS WITH YOU!

title:每个单词的首字母大写

msg = 'dear my friend i miss you very much'
msg.title()
# Dear My Friend I Miss You Very Much

太棒了!这么多的字符串相关的方法都了解啦,接下来的就是熟练运用了!!!

python学习番外篇——字符串的数据类型转换及内置方法的更多相关文章

  1. 零基础入门学习Python(14)--字符串:各种奇葩的内置方法

    前言 这节课我们回过头来,再谈一下字符串,或许我们现在再来谈字符串,有些朋友可能觉得没必要了,甚至有些朋友就会觉得,不就是字符串吗,哥闭着眼也能写出来,那其实关于字符串还有很多你不知道的秘密哦.由于字 ...

  2. Monkey源代码分析番外篇之Android注入事件的三种方法比較

    原文:http://www.pocketmagic.net/2012/04/injecting-events-programatically-on-android/#.VEoIoIuUcaV 往下分析 ...

  3. Python之路(第二十五篇) 面向对象初级:反射、内置方法

    [TOC] 一.反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发了计算机科学领域关于应用反射性的研究.它 ...

  4. python基础——4(数字、字符串、列表类型的内置方法介绍)

    目录 一.可变与不可变类型 二.数字类型 三.字符串类型 四.列表类型 一.可变与不可变类型 可变类型:值改变,但是id不变,证明就是在改变原值,是可变类型 不可变类型:值改变,id也跟着改变,证明产 ...

  5. python之字符串,列表,字典,元组,集合内置方法总结

    目录 数字类型的内置方法 整型/浮点型 字符串类型的内置方法 列表的内置方法 字典的内置方法 元组的内置方法 集合类型内置方法 布尔类型 数据类型总结 数字类型的内置方法 整型/浮点型 加 + 减 - ...

  6. 小白基础Python重要的字符串详解String的内置方法

    String的内置方法: st='hello world  {name} is {age}'  {}  特殊内容需要识别format print(st.count('1')) 统计元素个数 print ...

  7. Python14之字符串(各种奇葩的内置方法)

    一.字符串的分片操作 其分片操作和列表和元组一样 str1 = 'keshengtao' str1[2:6] 'shen' str1[:] 'keshengtao' str1[:4] 'kesh' 二 ...

  8. Python学习系列提升篇------字符串

    字符串是python学习中重要的内容,在以后的工作中,对字符串的处理也必少不了.下面总结一下关于字符串学习的经验. 1.1 字符串的连接和合并 用‘ + ’连接,将两个字符串相加.       合并, ...

  9. python基础之 反射,md5加密 以及isinstance, type, issubclass内置方法的运用

    内容梗概: 1. isinstance, type, issubclass 2. 区分函数和方法 3. 反射(重点) 4. md5加密 1. isinstance, type, issubclass1 ...

随机推荐

  1. synchronized底层实现原理及锁优化

    一.概述 1.synchronized作用 原子性:synchronized保证语句块内操作是原子的 可见性:synchronized保证可见性(通过"在执行unlock之前,必须先把此变量 ...

  2. cookie可设置哪些属性?httponly?

    chrome控制台的application下可查看: cookie name 字段为一个cookie的名称. value 字段为一个cookie的值. domain 字段为可以访问此cookie的域名 ...

  3. jQuery--筛选【串联函数】

    串联函数简介 A.add(B) 将A和B组合成一个对象 A.children().andSelf() 将之前的对象添加到操作集合中 A.children().children().end() 回到最近 ...

  4. Redis Set Type

    集合中的元素个数最多为2的32次方-1个,集合中的元素师没有顺序的. Redis集合的操作命令和对应的api如下: smembers [set] JedisAPI:public Set<Stri ...

  5. 学习MFS(三)

    1.MooseFS是什么 一个类MooseFS是一个具备冗余容错功能的分布式网络文件系统,它将数据分别存放在多个物理服务器或单独磁盘或分区上,确保一份数据有多个备份副本,然而对于访问MFS的客户端或者 ...

  6. Markdown语法2

    二 . 低频使用的语法 下面是相对用得少的markdown语法,但也值得学习学习. 10.区块(块引用) 要创建块引用,请在段落前添加一个 >  符号: 块引用支持多段落: 块引用支持嵌套,即引 ...

  7. Arduino 烧写bootloader

    什么是bootloader 一般情况下微处理器写入程序时都通过专门的编程器进行烧写,但是也可以通过在MCU中预先写入一些程序来实现某些基本功能,这些预先写入的程序代码就是bootloader.这样每次 ...

  8. C++类中隐藏的六个默认函数

    Test类中隐藏的六个默认的函数 class Test { public: //默认的构造函数 Test(): //析构函数 ~Test(): //拷贝构造函数 Test(const Test &am ...

  9. 顺利通过EMC实验(9)

  10. html实体编码遇上js代码

    单双引号 在js代码中 在js中单.双引号引起来的是字符串,如果我们要在字符串中使用单.双引号,需要反斜杠进行转义 let str='user\'s name'; // or let str=&quo ...