博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 字符串
阅读量:6173 次
发布时间:2019-06-21

本文共 9108 字,大约阅读时间需要 30 分钟。

1. 字符串了解

字符串最大用途是 设置其他值的格式,来完成拆分,合并,和查找等功能

1.1 字符串的基本操作

相对列表和元组而言,切片/索引/乘法/成员资格.长度.最小值.最大值均可用于字符串.

 
str1 = "你好,2018年,ai 中国"str2 = max(str1)                         # 最大字符print(str2)print(type(str2))print("*****完美分割线1******\n")str2 = min(str1)                         # 最小字符,此次最小为空格符号print(str2)print(type(str2))print("*****完美分割线2******\n")str2 = len(str1)                         # 长度计算:计算结果为整数print(str2)print(type(str2))print("*****完美分割线3******\n")str2 = str1 * 2                         # 字符串 乘法:乘法结果并无空格print(str2)print(type(str2))print("*****完美分割线4******\n")str2 = str1 + str1                         # 字符串 相加: 相加结果中并无空格print(str2)print(type(str2))print("*****完美分割线5******\n")str2 = str1[0]                         # 索引动作:单个子元素位置索引print(str2)print(type(str2))print("*****完美分割线6******\n")str2 = str1[2:4]                         # 索引动作:子元素位置自2开始,至3结束print(str2)print(type(str2))print("*****完美分割线7******\n")str2 = str1[::2]                         # 索引动作:子元素位置自2开始,至3结束print(str2)print(type(str2))print("*****完美分割线8******\n")str2 = "你好"                        # 成员资格 in : 返回True 或者Flaseprint(str2 in str1)print(type(str2 in str1))print("*****完美分割线9******\n")str2 = "你好,2018年,ai 中国"print(str2 == str1)                    # 比较运算符 字符串支持print(type(str2 in str1))print("*****完美分割线10******\n")lst1 = ["你好","2018年","ai","中国"]lst2 = ["你好","2018年","ai","中国"]print(lst2 == lst1)                    # 比较运算符 字符串支持print(type(lst2 in lst1))lst3 = lst1[0]                         # 索引返回的是 ,与当前子元素的格式一样print(lst3)print(type(lst3))print("*****完美分割线11******\n")str1 = "你好","2018年","ai","中国"  # 此为元组print(str1)print(type(str1))
效果如下:
*****完美分割线1******
*****完美分割线2******14
*****完美分割线3******你好,2018年,ai 中国你好,2018年,ai 中国
*****完美分割线4******你好,2018年,ai 中国你好,2018年,ai 中国
*****完美分割线5******你
*****完美分割线6******,2
*****完美分割线7******你,08,i中
*****完美分割线8******True
*****完美分割线9******True
*****完美分割线10******True
你好
*****完美分割线11******('你好', '2018年', 'ai', '中国')

2.字符串的格式

字符串的格式,是调用字符串方法 format 实现字符串指定位置的赋值,

字符串 str = "   ", 而格式字符串为 str = " {   }". format()   或者  " {   }  {   }  {   } " . format() 

       或 str = " {

{                }}" . format (      ).这取决于你希望结果中是否包含{},但{} 内 不可以有空格

        区分            赋值替换的位置        赋的值

替换字段包含以下信息

字段名   : 索引 或标识符 ,指出设置哪个值的格式,并使用结果 来替换字段,也可以指定特定值的特定部分,如列表元素

 
str1 = "{a} {b} {c} {d}"print(str1.format(a=1, b=2, c=3, d=4))     #最简单情况下,只需向format()函数提供要设置其格式的未命名参数,并在格式字符串中,使用未命名字段.此时将按顺序将字段和参数配对.print("*****完美分割线1******\n")str2 = "{a}{}".format(2,a = 1)      #使用未命名字段.此时将按顺序将字段和参数配对,你也可以给参数指定名称,这种参数将用于对于的替换字段中,也可以混合使用.print(str2)print(type(str2))print(str2[1])print(type(str2[1]))                   #格式为字符串.print("*****完美分割线2******\n")str3 = "{0}{a}".format(2,a = 1)       #格式为字符串.print(str3)print(type(str3))print(type(str3[0]))                   #格式为字符串.
效果如下

1 2 3 4*****完美分割线1******12
2
*****完美分割线2******21

转换标志 : 跟在! 感叹号后面的部分.当前支持的字符包含 r (repr)   s (str)  a(ascii) ,如果你指定了转换标志,将不适用对象的本身的格式设置机制,而是使用指定函数的将                      对象转换为字符串,再做进一步设置.

 
print("*****完美分割线3******\n")lst1 = ["China", "American", "Russia", "European Union"]str4 = "{}{}{}"str5 = "{}{}{}".format(lst1,lst1,lst1) # 参数可为字符串或列表print(lst1)print(str4)print(str5)print(type(str5))print("*****完美分割线4******\n")lst2 = ["China", "American", "Russia", "European Union"]str6 = "I LOVE {}".format(lst2[0])str7 = "they {country}".format(country = lst2)str7 = "I Regret {country[1]}".format(country = lst2)# 参数可为列表具体的元素print(lst2)print(str6)print(type(str6))print(str7)print(type(str7))print(len(str7))
效果如下:
*****完美分割线3******['China', 'American', 'Russia', 'European Union']{}{}{}['China', 'American', 'Russia', 'European Union']['China', 'American', 'Russia', 'European Union']['China', 'American', 'Russia', 'European Union']
*****完美分割线4******['China', 'American', 'Russia', 'European Union']I LOVE China
I Regret American
17

格式说明符 :跟在冒号后面的表达式,格式说明符 让我们能够详细的指定最终的格式,包含 格式类型(如 字符串 浮点数 或者十六进制),字段宽度和数的精度. 以及各种对齐方式 填充方式  或者如何显示百分位和千分位。

完成替换字段名后,可以设置参数的格式,首先我们尝试使用一个转换标志! 感叹号和r s a的使用,看下效果

 
str8 = "{i!r}  ,  {i!s}  ,  {i!a}".format(i = "π")# 转换标志 ! 感叹号print(str8)str9 = "{0}  ,  {0}  ,  {0}".format( "π")          # 无转换标志符print(str9)str9 = "{0}  ,  {0}  ,  {0}".format( "π")          # 无转换标志符print(str9)str10 = "this number is {pi:f}".format(pi = 3.14)          # 无转换标志符,f默认6位小数print(str10)

效果如下:

 
'π' , π , '\u03c0'π , π , ππ , π , πthis number is 3.140000

宽度/精度/千位分隔符

# 符号对齐 与用字符填充 #通常为了打印整齐的表格,对于负数符号,需要采用对齐,此处包含以下方式 #在指定的宽度/精度前面加上一个标志 0(填充0),加好+ (填充加好) 减号(填充-) 或者空格( ).
str18 = "{:010.2f}".format(3.1415926)                  # 冒号后第一位0,表示填充0print(str18)str18 = "{:+10.2f}".format(3.1415926)                  # 冒号后第一位+,表示填充1个加print(str18)str18 = "{:-10.2f}".format(3.1415926)                  # 冒号后第一位-,未填充上print(str18)print("*****完美分割线12******\n")str18 = "{:<010.2f}".format(3.1415926)                  # 冒号后第一位<,表示左对齐print(str18)str18 = "{:>+10.2f}".format(3.1415926)                  # 冒号后第一位<,表示右对齐print(str18)str18 = "{:^-10.2f}".format(3.1415926)                  # 冒号后第一位^,表示居中print(str18)print("*****完美分割线13******\n")str18 = "{:#<010.2f}".format(3.1415926)                  # 冒号后第一位#,表示左对齐,其他补充#print(str18)str18 = "{:#>+10.2f}".format(3.1415926)                  # 冒号后第一位#,表示右对齐,其他补充#print(str18)str18 = "{:#^-10.2f}".format(3.1415926)                  # 冒号后第一位#,表示居中,其他补充#print(str18)str18 = "{:=10.2f}".format(-3.1415926)                  # 冒号后第一位=,符号位与参数之间 填充 空格print(str18)str18 = "{:#=10.2f}".format(-3.1415926)                  # 冒号后第一位#=,符号位与参数之间 填充 #print(str18)str18 = "{:$=10.2f}".format(-3.1415926)                  # 冒号后第一位$=,符号位与参数之间 填充 $print(str18)print("*****完美分割线14******\n")str18 = "{:-.2}".format(3.1415926)                  # 冒号后第一位 无,显示2位,对齐print(str18)print(len(str18))str18 = "{:.2}".format(3.1415926)                  # 冒号后第一位 无print(str18)print(len(str18))str18 = "{: .2}".format(3.1415926)                  # 冒号后第一位 空格,以便与下面对齐print(str18)print(len(str18))str18 = "{:+.2}".format(3.1415926)                  # 冒号后第一位 加号 ,以便与下面对齐print(str18)print(len(str18))str18 = "{:.2}".format(-3.1415926)                  # 冒号后第一位无,参数有负值,方便与上文对齐print(str18)print(len(str18))
效果如下:
0000003.14 +3.14 3.14*****完美分割线12******3.14000000 +3.14 3.14 *****完美分割线13******3.14###########+3.14###3.14###- 3.14-#####3.14-$$$$$3.14*****完美分割线14******3.133.13 3.14+3.14-3.14

3.字符串的方法

常见的string 模块中的常量方法

import stringprint(string.digits)                                   # 打印 0-9 字符串print(string.ascii_letters)                            # 打印 所有大小写字母print(string.ascii_lowercase)                            # 打印 小学字母print(string.printable)                            # 打印 所有可打印的 ascii字符print(string.punctuation)                            # 打印 所有可打印的 ascii标点字符print(string.ascii_uppercase)                          #打印所有 大写字母

center

find

join

lower

replace

split

strip

translate

 
print("*****完美分割线21******\n")tuple1 = str.maketrans("cs", "kz")  # translare 方法启用前,需要创建一个对换表,类似于获取 unicode码print(tuple1)str29 = "this is an incredible test"print(str29.translate(tuple1))tuple1 = str.maketrans("cs", "kz", " ")  # translare 方法 可在后方添加替换其他字符,比如空格str29 = "this is an incredible test"print(str29.translate(tuple1))print("*****完美分割线21******\n")import stringstr30 = "this is an incredible test"str31 = str30.isalnum()               # Python isalnum() 方法检测字符串是否由字母和数字组成print(str31)str31 = str30.isalpha()               # Python isalpha() 方法检测字符串是否只由字母组成print(str31)str31 = str30.isdecimal()               # Python isdecimal() 方法检查字符串是否只包含十进制字符print(str31)str31 = str30.isdigit()               # Python isdigit() 方法检测字符串是否只由数字组成print(str31)str31 = str30.isidentifier()               #isidentifier 是否满足标识符定义规则 标识符定义规则为:只能是字母或下划线开头、不能包含除数字、字母和下划线以外的任意字符。print(str31)str31 = str30.islower()               #islower) 方法检测字符串中所有的字母是否都为小写print(str31)str31 = str30.isnumeric()               #isnumeric() 方法检测字符串是否只由数字组成print(str31)str31 = str30.isprintable()               # isprintable() 判断是否为可打印字符串,例如制表符、换行符就不是可打印字符,但空格是print(str31)str31 = str30.isspace()               # isspace() 方法检测字符串是否只由空白字符组成print(str31)str31 = str30.isupper()               # isupper() 方法检测字符串中所有的字母是否都为大写print(str31)str31 = str30.istitle()              # istitle()  检测字符串中所有的单词拼写首字母是否为大写,且其他字母为小写print(str31)
效果如下:
China, Spain to enhance partnership,Spain ****China, Spain to enhance partnership,Spain**********完美分割线15******773636*****完美分割线16******1+2+3+4+512345*****完美分割线17******china, spain to enhance partnership,spainChina, Spain To Enhance Partnership,SpainChina, Spain To Enhance Partnership,spain*****完美分割线18******China, Spain both enhance to partnership,Spain*****完美分割线19******['China, Spain to enhance partnership,Spain']['1', '2', '3', '4', '5']*****完美分割线20*********China, Spain to  *** enhance partnership,Spain!!!! ***China, Spain to *** enhance partnership,Spain!!!! China, Spain to *** enhance partnership,Spain*****完美分割线21******{
115: 122, 99: 107}thiz iz an inkredible teztthizizaninkredibletezt*****完美分割线21******FalseFalseFalseFalseFalseTrueFalseTrueFalseFalseFalse

转载于:https://www.cnblogs.com/rango0550/p/10158538.html

你可能感兴趣的文章
Apache-shiro学习
查看>>
React-Redux源码分析
查看>>
页面传递参数问题
查看>>
PHP FPM源代码反刍品味之五:信号signal处理
查看>>
5G网速真的有理论上那么高吗?
查看>>
云场景实践研究第4期:小鱼儿科技
查看>>
Set添加自定义方法对象如何保证唯一性
查看>>
解读大型站点和小型站点的seo区别
查看>>
JS中onpropertychange事件和onchange事件区别
查看>>
AngularDart Material Design 是/否 按钮
查看>>
数据分页查询
查看>>
javascript阻止事件冒泡和浏览器的默认行为
查看>>
智能优化算法
查看>>
mongodb sharding原理分析
查看>>
LNMP架构介绍,MySQL安装,PHP安装,Nginx介绍
查看>>
LS命令
查看>>
apache在默认404、403提示页面中隐藏apache版本和系统信息
查看>>
面试题剖析,如何保证消息队列的高可用?
查看>>
深入理解 Java 多线程核心知识:跳槽面试必备
查看>>
python初步
查看>>