今天我们说说字符串类型,涉及很多基础知识,不过字符串还是需要在多讲讲的。

回顾一下:字符串与长字符串

Python非常简单,并没有专门分出一个char(Character)类型(搞过C/Java的同学都熟悉)

在Python中,由单引号/双引号/三引号扩起来的通通都是字符串!

我们再看看字符串长啥样

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/10/30 10:13 上午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : string_demo.py
# @Project : hellotext1 = "持续学习持续开发,我是雷学委"
text2 = '持续学习持续开发,我是雷学委'
assert text1 == text2  # 他们在python里面是一样的!# 字串的子串print("1char substring : %s and type %s "%(text1[0], type(text1[0]))) #我们看到尽管是一个字符,python也是把它当做一个字符串,因为python中没有字符串类型!
print(text1[0:4])
print(text1[4:])
print(text1[:4])longtext = """
持续学习持续开发,我是【雷学委】!
编程很有趣,关键是把技术搞透彻讲明白。
欢迎关注微信,点赞支持收藏!
"""
print(longtext)
复制代码

读者可以直接复制运行代码,学委补充了运行效果图:

转义字符,如何在字符串中输出引号/换行?

什么是转义字符?
比如有些论坛包含了关键字/敏感字扫描
我们就会用拼音或者某些谐音,表达同样的意思 学委觉得这就是转义字符的精髓了。

也就是换个形式表达同样的意思,避开平台的限制!

就像之前提到的每个编程语言都有保留关键字(比如‘break’,‘continue’,‘for’等等)。

字符串中某些字符是不会被直接打印出来,在字符串处理系统中,它们有特殊性,就比如单引号文本内出现单引号。比如字符串如何保存换行。

所以很多语言中出现了转义字符的概念。通常如下

\后跟上一个字符
比如:\n, \\, \'
复制代码

下面学委准备了一些代码展示转义字符,从高频到低频:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/10/30 10:13 上午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : string_demo2.py
# @Project : hello# 常用的转义字符
print("*" * 16)
print("下面是雷学委认为的从高频到低频使用的转义符")
print("\'=[']")  # 转义输出单引号,这里展示一下在双引号扩起来的字符串中其实大可不必!在三引号长字符串中不必转义
print("\"=["]")  # 转义输出双引号,这里展示一下在单引号扩起来的字符串中其实大可不必!在三引号长字符串中不必转义
print("\n=[\n]")  # 换行输出
print("\r=[\r]")  # 移动光标到行开头,所以这行输出仅为']'
print("\=[\]")  # 转义输出''符号
print("\t=[\t]")  # 横向制表符,输出Tab键同等效果,一般4个空格(可以在PyCharm空白行中输入Tab看看跳了几个空格)
print("\b=[\b]")  # 光标前移一位
# print("\v=[\v]") # 纵向制表符, 学委选择忽略,这个制表符在Java中也没有支持,属于比较少见的类型
print("*" * 16)
复制代码

运行效果如下:

当然还有其他转义符,本人不常用也不想提到,哈哈哈

接下来我会介绍一写字符串操作。

什么是字符串格式化,为什么需要这样做?

我们有时候刷抖音/B站看到封面很好看,但是进入直播发现,不过如此! 想必主播通过某种方式把输出转换为读者想看的内容。

是不是大概懂了什么是格式化和格式化的必要性了!

仅仅类比,我们程序的格式化,并没有那么过份!1输出还是1,只是人类更好读懂了。

而不像网络主播那样稍微格式化(工程挺大)从1变成了0。

毕竟程序不能欺骗开发者。

必要性:输出为更好的格式化,方便开发者和用户读懂输出。

程序中都有哪些格式化?

网上说有三种,四种,未来还可能会增加其他库。

学委开发过多种语言,大概总结如下两个大类:

  • 字符串占位符替换
  • 字符串关键字替换

下面看看代码

占位符格式化

第一种%占位符格式化

python中我们最常见的是’%‘ 这类占位符号

str = "hello"
"this is a string: %s" % str
"this is a string: %s, %s" % (str, str)
复制代码

上面我们观察一下,可以发现输出中‘%s'被替换为了’hello'; 另一个是多个‘%s’的替换是用一个元组,按照对应下标来替换。

格式化基本上都可以使用'%s'来完成。

好,懂了这个,我们继续看看下面的代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/10/30 10:13 上午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : string_format.py
# @Project : hello
import sysfirst = "持续学习"
second = "持续开发"
slogan = first + second
print(slogan)
banner = "*" * 16
print(banner)
slice = slogan[2:4]
print(slice)print(""""学习" in slogan : %s""" % ("学习" in slogan))
print(""""不学习" not in slogan : %s""" % ("不学习" not in slogan))
print(r"""打印\n换行被当做普通字符输出了!""")
# 以上我们都可以看到%,很多次代码都有说到这个,但是并没有过多解释
print("%s" % slogan)  # 最常用了%s 格式化字符串
# print("%c"%'ccc')#TypeError: %c requires int or char
print("%c" % 'c')  # %c 通常用来强制检测待输出的字符串必须长度为1
print("%c" % '雷')  # %c 通常用来强制检测待输出的字符串必须长度为1
number = 102.40101
print("%%i 符号整数 %i" % number)
print("%%i 符号整数:%i" % -number)
print("%%d 符号整数 %d" % number)
print("%%d 符号整数 %d" % -number)
print("%%u 无符号整数:%u" % number)
print("%%u 无符号整数:%u" % -number)
#print("八进制 %o" % number)
print("%%o 八进制 %o" % 102)
print("%%x16进制 %x" % 102)
#print("16进制 %X" % 102)
print("%%e 自然常数 e进制: %e" % number)
#print("%E" % number)
print("%%f 浮点数 %f" % number)
print("%%g 灵活的有效显示:%g" % number) #保证显示6微有效数字的前提下,灵活的选择小数方式,或者科学计数法
#print("%G" % number)
print("%%g 灵活的有效显示:%g" % (number*10001)) #保证显示6微有效数字的前提下,灵活的选择小数方式,或者科学计数法
#下面两种写法需要注意执行顺序
#print("%g" % number*10001) #注意这种写法
#print("%g" % number**10) #注意这种写法
复制代码

读者可以直接复制运行代码,学委补充了运行效果图:

这里比较特殊的是‘%u’无符号整型的展示,正负数并无区别。

那是肯定的,无符号整型跟有符号整型是表示数的两种手段。
但是无符号的比有符号多了一个位来放数字,所以范围更大。

上面这段题外话,小白稍微看看或者跳过。我们继续看看其他格式化方式。

第二种占位符格式化

跟上面稍微区别就是我们会看到一下明显的下标。

{0}, {1}, ... {n}

想要留几个替换位,就放几个{}括起来,但要求必须给到n个参数,更多信息参考

这个非常简单直接,我们看看代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/10/30 10:13 上午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : string_format1.py
# @Project : hello
import sysslogan = "持续学习持续开发"
author = "雷学委"
text = "{0}, {1}".format(slogan, author)
print("text= %s" % text)
复制代码

关键字格式化

非常好理解就是类似{}一对大括弧中间为待替换的内容。

这个非常简单直接,我们看看代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2021/10/30 10:13 上午
# @Author : LeiXueWei
# @CSDN/Juejin/Wechat: 雷学委
# @XueWeiTag: CodingDemo
# @File : string_format2.py
# @Project : hello
import sysslogan = "持续学习持续开发"
author = "雷学委"
text = f"{slogan} , {author}"
print("text= %s" % text)
复制代码

运行效果如下:

从这里看,关键字格式化比较友好!

超详细的Python中的字符串常识【赶紧收藏】相关推荐

  1. python操作json字符串,超详细的Python文件操作知识

    来自:CSDN,作者:南枝向暖北枝寒MA 链接:https://blog.csdn.net/mall_lucy/article/details/104547365 [导语]:python进行文件操作, ...

  2. 如何在Python中获取字符串的子字符串?

    有没有一种方法可以在Python中为字符串加上字符串,以从第三个字符到字符串的末尾获取新的字符串? 也许像myString[2:end] ? 如果离开第二部分意味着"直到最后",而 ...

  3. 硬肝!超详细的Python文件操作知识

    来源:南枝向暖北枝寒MA https://blog.csdn.net/mall_lucy/article/details/104547365 [导语]:python进行文件操作,在日常编程中是很常用的 ...

  4. python方法_详细解读Python中的__init__()方法

    __init__()方法意义重大的原因有两个.第一个原因是在对象生命周期中初始化是最重要的一步:每个对象必须正确初始化后才能正常工作.第二个原因是__init__()参数值可以有多种形式. 因为有很多 ...

  5. python or的用法_详细介绍Python中and和or实际用法

    and 和 or 的特殊性质 在Python 中,and 和 or 执行布尔逻辑演算,但是它们并不返回布尔值:而是,返回它们实际进行比较的值之一.下面来看一下实例.>>> 'a' a ...

  6. python中输入字符串_简单讲解Python中的字符串与字符串的输入输出

    简单讲解Python中的字符串与字符串的输入输出 发布于 2016-03-26 14:35:42 | 110 次阅读 | 评论: 0 | 来源: 网友投递 Python编程语言Python 是一种面向 ...

  7. python中可以作为定界符_在Python中,字符串属于不可变有序序列,使用单引号、双引号、三单引号或三双引号作为定界符,并且不同的定界符之间可以互相嵌套。...

    在Python中,字符串属于不可变有序序列,使用单引号.双引号.三单引号或三双引号作为定界符,并且不同的定界符之间可以互相嵌套. 下述哪种光谱法是基于发射原理()?A:分光光度法B:荧光光度法C:红外 ...

  8. isdigit函数python_在Python中处理字符串之isdigit()方法的使用

    在Python中处理字符串之isdigit()方法的使用 更新时间:2015年05月18日 12:06:29 投稿:goldensun 这篇文章主要介绍了在Python中处理字符串之isdigit() ...

  9. 在Python中连接字符串的首选方法是什么?

    本文翻译自:Which is the preferred way to concatenate a string in Python? Since Python's string can't be c ...

最新文章

  1. vue脚手架和html,HTML和静态资源
  2. php远程开机ubuntu,Ubuntu系统远程开机操作实例
  3. 百度编辑器在编辑视频时src丢失的问题
  4. 解决:The ‘Access-Control-Allow-Origin‘ header contains multiple values‘x, *‘, but only one is allowed.
  5. hbuilder热更新
  6. mongodb对数组元素及内嵌文档进行增删改查操作(转)
  7. prefetch 和preload_preload_prefetch
  8. Ubuntu下安装Rabbitmq和golang环境
  9. 手机内存占用超过一半会不会卡?
  10. python优先队列,队列和栈
  11. java退出登录_java实现注销登录
  12. 程序员和美工是否可共存?
  13. 螺旋数字的python实现
  14. ffmpeg之图片串流h264视频
  15. 【51单片机快速入门指南】6.2:SPI 、八线、四线控制 LCD12864 屏幕及Proteus的仿真(支持中文汉字)
  16. 微信隐藏代码大全(来源于网络)
  17. 【时间之外】原来春节抽红包是这样实现的
  18. 互联网晚报 | 05月31日 星期二 | 教育部将彻查教材插图问题;​6月1日上海有序恢复相关秩序;近半数职场人年终奖少于1个月...
  19. 票据ticket实现方式java代码_Java代码实践12306售票算法(二)
  20. Android动态底部导航

热门文章

  1. R语言ggplot2可视化:在选定数据点周围添加三角形(Add Triangles Around Select Data Points)
  2. R语言将dataframe宽表转化为长表实战:使用data.table、使用tidyr包gather函数、使用reshape2包
  3. R语言dplyr包将dataframe中的NA值替换(replace)为0实战:所有NA值替换(replace)为0、具体列的NA值替换(replace)为0、若干列的NA值替换(replace)为0
  4. plotly可视化绘制多子图(subplots)共享坐标轴
  5. 支持向量机(SVM):超平面及最大间隔化、支持向量机的数学模型、软间隔与硬间隔、线性可分支持向量机、线性支持向量机、非线性支持向量机、核函数、核函数选择、SMO算法、SVM vs LR、优缺点
  6. SQL中where与having的区别
  7. Dickey-Fuller检验+迪基-福勒检验
  8. C++所提供的类模板应用(堆栈)
  9. java ase 加密_java实现ase加密解密
  10. 两个server 两个数据库 微服务_微服务的数据库设计