如果一个女孩子喜欢看龙猫,那么请珍惜她,呵护她

  任何一门语言,字符串总是最基本也是最需要掌握的一个变量,想想入门的Hello World,输出的就是字符串。

  官方文档:https://docs.python.org/3/library/stdtypes.html#text-sequence-type-str。

  字符串也成为字符序列,

一、表现形式

1.1 基本表现形式

  字符串可以用单引号、双引号、三引号引起来,特点如下:

  • 单引号和双引号相似,内部如果还要使用则需要用斜杠进行转义
  • 三引号是三个单引号或双引号,可以进行换行,也就是说包含所有字面的符号
'yiwangzhibujian'
"yiwangzhibujian"
'''yiwangzhibujian'''
"""yiwangzhibujian"""

  上面的形式都是一样的,同样可以使用字符串类来创建字符串,字符串类为str

name=str('yiwangzhibujian')
print(name)

  这种方法了解即可。

1.2 其他表现形式

  待续

二、常用方法

  字符串的所有方法,详见官方文档:https://docs.python.org/3/library/stdtypes.html#string-methods。只说使用频率最高的几个。

2.1 常用方法

str.center(width[, fillchar])

  主要用来格式化字符串,如果width小于字符串长度,返回原始字符串,大于字符串长度,则字符串居中,两侧用fillchar填充,fillchar默认为空格

str.count(sub[, start[, end]])

  :返回指定字符串出现的次数

str.encode(encoding="utf-8", errors="strict")

  转换成字节数组

str.endswith(suffix[, start[, end]])

  判读字符串是否以指定字符串结尾

str.find(sub[, start[, end]])

  返回指定字符串所在的索引,没有返回-1

str.join(iterable):

  使用该字符串来连接可迭代对象

str.lower():

  转换小写

str.replace(old, new[, count]):

  字符串替换,count为替换出现的前几个,默认为所以

str.rfind(sub[, start[, end]]):

  返回字符串最后一次出现的位置

str.split(sep=None, maxsplit=-1):

  使用指定字符进行分割,若指定次数则从左侧开始计算

str.splitlines([keepends]):

  按照换行符进行分割,换行符不包含其中,换行符包括车

str.startswith(prefix[, start[, end]]):

  判断字符是否以指定字符开始

str.strip([chars]):

  去除前后指定字符,默认为空格

str.upper():

  将所有字符转换成大写

2.2 全局方法

  也有一些全局方法可以作用在字符串上:

len():

  获得字符串的长度

  这个方法还是比较常用的。

2.3 不常用方法

  不常用方法也有很多,大致了解即可,以后有个需求再来看,如下:

  • str.capitalize():返回字符串首字母大写形式
  • str.casefold():返回字符串的casefolded形式(???)
  • str.expandtabs(tabsize=8):将制表符用空格进行替换
  • str.format(*args, **kwargs):格式化字符串
  • str.format_map(mapping):类似于str.format
  • str.index(sub[, start[, end]]):类似于find但是未找到会报错
  • str.isalnum():是否全部为数字或者字母
  • str.isalpha():是否都是字母
  • str.isdecimal():是否都是数字
  • str.isdigit():是否都是数字
  • str.isidentifier():???
  • str.islower():是否都是小写
  • str.isnumeric():是否都是数字
  • str.isprintable():是否都是可打印字符
  • str.isspace():是否是空格
  • str.istitle():是否是标题
  • str.isupper():是否都是大写
  • str.ljust(width[, fillchar]):类似于str.center(width[, fillchar]),左填充
  • str.lstrip([chars]):删除左侧指定字符,默认为空格
  • static str.maketrans(x[, y[, z]]):???
  • str.partition(sep):分割指定字符串首次出现的位置
  • str.rindex(sub[, start[, end]]):类似于str.rfind(sub[, start[, end]]),但是找不到会报错
  • str.rjust(width[, fillchar]):和str.ljust(width[, fillchar])一个性质,右侧填充
  • str.rpartition(sep):和str.partition(sep)一个性质,分割字符串最后一次出现的地方
  • str.rsplit(sep=None, maxsplit=-1):按指定字符进行分割,若指定数量则从最右边开始
  • str.rstrip([chars]):同str.lstrip([chars])一个性质,删除右侧
  • str.swapcase():将大小写进行互转
  • str.title():将每个单词大首字母进行大写
  • str.translate(table):字符映射使用???
  • str.zfill(width):???

2.4 字符串运算

  字符串也有一些简单的运算方法:

  • +:连接两个字符串,仅限字符串
  • *:重复输出字符串
  • []:通过索引下标获得字符串的字符
  • in:判断字符是否在字符串中
  • not in:和in相反
  • %:字符串格式化,下面讲到

三、字符串格式化

  字符串格式化的一个用处就是避免拼接字符串的麻烦。先看一个简单的例子:

print ("hello %s,My name is %s!" % ('laizhezhikezhui', 'yiwangzhibujian'))

  程序会输出:

hello laizhezhikezhui,My name is yiwangzhibujian!

  %s 代表一个字符串的占位符,其他还有:

 符   号 描述
      %c  格式化字符及其ASCII码
      %s  格式化字符串
      %d  格式化整数
      %u  格式化无符号整型
      %o  格式化无符号八进制数
      %x  格式化无符号十六进制数
      %X  格式化无符号十六进制数(大写)
      %f  格式化浮点数字,可指定小数点后的精度
      %e  用科学计数法格式化浮点数
      %E  作用同%e,用科学计数法格式化浮点数
      %g  %f和%e的简写
      %G  %f 和 %E 的简写
      %p  用十六进制数格式化变量的地址

  当然还有一些辅助指令:

符号 功能
* 定义宽度或者小数点精度
- 用做左对齐
+ 在正数前面显示加号( + )
<sp> 在正数前面显示空格
# 在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X')
0 显示的数字前面填充'0'而不是默认的空格
% '%%'输出一个单一的'%'
(var) 映射变量(字典参数)
m.n. m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)

四、字符串其他知识

4.1 字符串的本质

  简单来说是有序的字符的集合。因此所有可应用于集合的方法都可应用于字符串:

name='yiwangzhibujian'
print('k' in name)
print('w' in name)
for i in name:
print(i)
========控制台输出========
False
True
y
i
w
a
n
g
z
h
i
b
u
j
i
a
n

  字符串和Java一样不可变。

4.2 字符串下标

  字符串也可以支持下标访问,从0开始,还有一个特性就是可以使用负数,-1代表最后一个,以此类推:

name='yiwangzhibujian'
print(name[0])
print(name[-1])
========控制台输出========
y
n

  注意使用的时候防止下标越界。

4.3 字符串切片

  切片不只应用于字符串,也应用list、tuple等集合,功能强大,使用简单,要掌握用法,基本语法如下:

str[i:j]
  • 包含下边界,不包含上边界
  • 下边界默认为0
  • 上边界默认为字符串长度

  另外分片还引入第三个值,步进,因此默认不用的时候步进为1,若步进为负数,表示倒叙进行分片。

4.4 字符串拼接

  字符串使用+号拼接算是一种常见的用法,但是字符串和数字拼接是会报错的,必需将数字提前进行转换,str()来完成转换

【Python】Java程序员学习Python(七)— 文本类详解(字符串、str)的更多相关文章

  1. 【Python】Java程序员学习Python(五)— 函数的定义和使用

    不想做一个待宰的羔羊!!!!要自己变得强大.... 函数的定义和使用放在最前边还是有原因的,现在语言趋于通用,基本类型基本都是那些,重点还是学习对象的使用方法,而最根本的还是方法的使用,因此优先介绍, ...

  2. 【Python】Java程序员学习Python(二)— 开发环境搭建

    巧妇难为无米之炊,我最爱的还是鸡蛋羹,因为我和鸡蛋羹有段不能说的秘密. 不管学啥,都要有环境,对于程序员来说搭建个开发环境应该不是什么难题.按顺序一步步来就可以,我也只是记录我的安装过程,你也可以滴. ...

  3. 【Python】Java程序员学习Python(三)— 基础入门

    一闪一闪亮晶晶,满天都是小星星,挂在天上放光明,好像许多小眼睛.不要问我为什么喜欢这首歌,我不会告诉你是因为有人用口琴吹给我听. 一.Python学习文档与资料 一般来说文档的资料总是最权威,最全面的 ...

  4. 【Python】Java程序员学习Python(六)— 流程控制、异常处理

    和Java语言一样,Python也有基本的流程控制,简单了解下即可. 一.流程控制的元素 条件 条件就是布尔值或者布尔值的表达式,要么是True要么是False. 代码块 在Python中,代码块不是 ...

  5. 【Python】Java程序员学习Python(四)— 内置方法和内置变量

    <假如爱有天意> 当天边那颗星出现,你可知我又开始想念,有多少爱恋只能遥遥相望,就像月光洒向海面,年少的我们曾以为,相爱的人就能到永远,当我们相信情到深处在一起,听不见风中的叹息,谁知道爱 ...

  6. Java程序员必备知识-多线程框架Executor详解

    为什么引入Executor线程池框架 new Thread()的缺点 每次new Thread()耗费性能 调用new Thread()创建的线程缺乏管理,被称为野线程,而且可以无限制创建,之间相互竞 ...

  7. Java程序员的必备知识-类加载机制详解

    类加载器的概念 类加载器是一个用来加载类文件的类. Java源代码通过javac编译器编译成类文件.然后JVM来执行类文件中的字节码来执行程序.类加载器负责加载文件系统.网络或其他来源的类文件. JV ...

  8. 【Python】Java程序员学习Python(十)— 类、包和模块

    我觉得学习到现在应该得掌握Python的OOP编程了,但是现在还没有应用到,先留一个坑. 一.类和对象 说到类和对象其实就是在说面向对象编程,学完Java以后我觉得面向对象编程还是很不错的,首先封装了 ...

  9. 【Python】Java程序员学习Python(一)— 为什么学习Python

    现在是6月份,毕业快3年了,虽然不能说对Java掌握的程度达到了如火纯青的地步,但是依然感觉到了瓶颈期,Java用的多了,也到了随心所欲的地步了,所以学第二门语言的想法一直在我脑海里闪现,有想法了就要 ...

随机推荐

  1. (转)MySQL优化笔记(八)--锁机制超详细解析(锁分类、事务并发、引擎并发控制)

    当一个系统访问量上来的时候,不只是数据库性能瓶颈问题了,数据库数据安全也会浮现,这时候合理使用数据库锁机制就显得异常重要了. 原文:http://www.jianshu.com/p/163c96983 ...

  2. Java的注解相关的命令

    与注解处理器的有关的命令有5个,分别如下: (1)-XprintProcessorInfo 输出有关请求处理程序处理哪些注释的信息 (2)-XprintRounds 输出有关注释处理循环的信息 (3) ...

  3. Android开发之漫漫长途 Ⅲ——Activity的显示之Window和View(2)

    该文章是一个系列文章,是本人在Android开发的漫漫长途上的一点感想和记录,我会尽量按照先易后难的顺序进行编写该系列.该系列引用了<Android开发艺术探索>以及<深入理解And ...

  4. celery在Django中的应用

    这里不解释celery,如果不清楚可以参考下面链接: http://docs.celeryproject.org/en/latest/getting-started/introduction.html ...

  5. jenkins 踩坑路 之 jenkins ssh 脚本

    背景: 由于公司业务调整,整个业务要从阿里云迁移到aws,自然 jenkins 也是要进行迁移的.jenkins 迁移过程中遇到的问题在此记录下,希望能给遇到类似问题的朋友些许帮助.也便于我后期遇到此 ...

  6. C++字符串string类常用操作详解(一)【初始化、遍历、连接】

    代码示例: #include <iostream> #include "string" using namespace std; //字符串初始化 void strIn ...

  7. Joda-Time 学习笔记

    一 Jode-Time 介绍 任何企业应用程序都需要处理时间问题.应用程序需要知道当前的时间点和下一个时间点,有时它们还必须计算这两个时间点之间的路径.使用 JDK 完成这项任务将非常痛苦和繁琐.既然 ...

  8. 复刻smartbits的国产网络测试工具minismb-如何测试ip限速

    复刻smartbits的网路性能测试工具MiniSMB,是一款专门用于测试智能路由器,网络交换机的性能和稳定性的软硬件相结合的工具.可以通过此工具测试任何ip网络设备的端口吞吐率,带宽,并发连接数和最 ...

  9. vue cli+axios踩坑记录+拦截器使用,代理跨域proxy

    1.首先axios不支持vue.use()方式声明使用,看了所有近乎相同的axios文档都没有提到这一点 建议方式 在main.js中如下声明使用 import axios from 'axios'; ...

  10. golang基础--控制语句

    go基础之控制语句 补充知识 指针 与其他语言不同,在Go中不支持指针运算即->运算符,而直接采用.选择符来操作指针目标对象的成员. 操作符&取变量的地址,使用*通过指针间间接访问目标对 ...