首页 > 编程语言 >Python9 字符串

Python9 字符串

时间:2022-11-27 14:58:16浏览次数:42  
标签:city name s1 Python9 tom 字符串 My

字符串

简介和驻留机制

基本数据类型、不可变的字符序列

驻留机制:有个驻留池留着相同的字符串,如果内容相同,就不会再去开辟空间存储了,意思是内容相同的字符串占一个位

你可以用ID() 方法去查看三个一样的字符ID 都是一样的,你也可以用 is判断

注意:如果是标识符他不会产生驻留机制:

image-20221126170928470

上面是规则,下面演示一下:

# 环境:PyCharm
s1 = "xianyu"
s2 = "xianyu"
s3 = "xianyu"

print(s1 == s2)  # True
print(s1 is s2)  # True
print(id(s1), id(s2))  # 2489056611312 2489056611312

s1 = "xianyu%"
s2 = "xianyu%"
print(s1 == s2)  # True
print(s1 is s2)  # True 因为这里是PyCharm环境所以为True ,如果 是 CMD中为 False 因为存在标识符 所以不会触发驻留机制
print(id(s1), id(s2))  # 1956230046832 1956230046832 如果CMD环境是不一样的,因为存在标识符 所以不会触发驻留机制

# 因为PCharm做了优化,无论如何下面都是True的,关于CMD的我也在下面截图。
s1 = -5
s2 = -5
print(s1 == s2)  # True
print(s1 is s2)  # True

s1 = -6
s2 = -6
print(s1 == s2)  # True
print(s1 is s2)  # True

字符长度为 0 或 为1 的字符串,只要是内容相同,那么就驻留触发:

image-20221127133615667

交互模式:【各种条件:】

image-20221127132840970

image-20221127134140579

image-20221127134046104

sys中的 intern :

import sys

s1 = "s2%%%"
s2 = sys.intern(s1)
print(s1 is s2)  # 强制了 所以一定是 True

以上有些没列出,具体学习还得百度多看看别人的,这里其实也差不多了。

下面是字符串常用方法API 不做演示【用之前千万要百度一下用法实例!!!】:

![image-20221126171104314](img/image-20221126171104314.png

image-20221126171607270

image-20221126173631408

image-20221126173653871

image-20221127135946378

image-20221127140157831

image-20221127141056129

字符串的比较操作

image-20221127141725211

image-20221127141753606

== 是比较 字符串的值

is 是比较 字符串的id

切片操作 [start : end : step]

切片和以前的默认值一样 【具体自己去试即可】

image-20221127142156407

image-20221127142344744

其中,里面每一个字符串都是独立的。

字符串的格式化

这个非常容易也非常方便!

下面摘抄慕课网的笔记(因为我觉得写的很好):

在 Python 中使用反斜杠 \ 加字母的组合来表示一些特殊字符,例如:\n 表示换行,\ 之后的字符 n 的含义已经不再是原来 ASCII 字符的含义了,所以被称为转义字符。

常用的转义字符如下所示:

转义字符 描述
\t 制表
\n 换行
\’
" "
\ \

通过使用字符串 + 连接运算可以将多个字符串拼接起来,例如:

>>> name = 'tom'
>>> city = 'nanjing'
>>> 'My name is ' + name + ', I live in ' + city + '.'
'My name is tom, I live in beijing.'

在第 3 行,使用字符串 + 将以下 5 个字符串拼接起来:

  • 'My name is ’
  • name
  • ', I live in ’
  • city
  • ‘.’

最终得到字符串 ‘My name is tom, I live in beijing’,像这样将多个字符串拼接起来的表达式非常不直观,Python 提供了字符串格式化用于简化拼接多个字符串。

format 方法

>>> name = 'tom'
>>> city = 'beijing'
>>> text = 'My name is {}, I live in city {}.'
>>> text.format(name, city)
'My name is tom, I live in beijing.'
  • 在第 1 行,创建变量 name
  • 在第 2 行,创建变量 city
  • 在第 3 行,创建字符串 text,字符串中 % s 被称为占位符,text 中有两个占位符
  • 在第 4 行,调用字符串 text 的 format 方法,该方法有两个参数:name 和 city
  • 在第 5 行,将 text 中的两个占位符 % s 替换为这两个参数,得到最终的结果 ‘My name is tom, I live in beijing.’

与上一节使用 + 运算连接相比,格式化字符串显著的提高了程序的可读性。

% 运算符

>>> name = 'tom'
>>> city = 'beijing'
>>> text = 'My name is %s, I live in city %s.'
>>> text % (name, city)
'My name is tom, I live in beijing.'
  • 在第 1 行,创建变量 name
  • 在第 2 行,创建变量 city
  • 在第 3 行,创建字符串 text,字符串中 % s 被称为占位符,text 中有两个占位符
  • 在第 4 行,使用运算符 % 进行字符串格式化。运算符 % 有两个操作数,左边的操作数是字符串变量 text,右边的操作数是一个元组,元组中包含两个参数:name 和 city
  • 在第 5 行,将 text 中的两个占位符 % s 替换为这两个参数,得到最终的结果 ‘My name is tom, I live in beijing.’

在实践中,通常直接将字符串与参数使用运算符 % 格式化,如下所示:

>>> name = 'tom'
>>> city = 'beijing'
>>> 'My name is %s, I live in city %s.' % (name, city)
'My name is tom, I live in beijing.'

如果有多个参数,需要将所有的参数保存在一个元组中;如果只有一个参数,可以不用保存在元组中,举例如下:

>>> name = 'tom'
>>> 'My name is %s.' % name
'My name is tom.'

在第 2 行,只有一个参数,可以不用将参数封装在元组中

占位符

% 是一个特殊的符号,后面跟着一个字符用于说明参数的类型:

  • % s 表示字符串
  • % d 表示整数
  • % f 表示浮点数

有多种类型的占位符,初学时需要掌握如下常用的占位符:

符号 描述
%% 用于表示 %
%c 格式化字符及其 ASCII 码
%s 格式化字符串
%d 格式化整数
%f 格式化浮点数
  1. % s 用于格式化字符串
  2. % d 用于格式化整数
  3. % f 用于格式化浮点数
  4. %% 用于表示字符 % 本身
>>> name = 'tom'
>>> 'name is %s' % name
'name is tom'

>>> integer = 123
>>> 'integer is %d' % integer
'integer is 123'

>>> float = 123.456
>>> 'float is %f' % float
'float is 123.456000'

>>> a = 3
>>> b = 2
>>> c = a % b
>>> '%d %% %d = %d' % (a, b, c)
3 % 2 = 1

%% 是一个特殊的占位符,表示字符 % 本身。

在实践中,通常使用 print 方法输出将格式化后的字符串,示例如下:

>>> name = 'tom'
>>> city = 'beijing'
>>> print('My name is %s' % name)
My name is tom
>>> print('My name is %s, I live in city %s.' % (name, city))
My name is tom, I live in beijing.

小结

字符串和数值一样,同样有基本的运算方式,但是最终得到的结果形式和数值却略有不同,大家在使用的时候要注意这一点。字符串的常用方法也需要大家多多练习和使用,可以把正文中的代码多敲几遍,一个好的程序员就是要多敲代码才能成长。

标签:city,name,s1,Python9,tom,字符串,My
From: https://www.cnblogs.com/bi-hu/p/16929662.html

相关文章

  • 野花--js中使用+实现转换成字符串的小注意
    在使用C3的transform时出现的一个问题:this.style.transform='translateX('+boxLeft+e.targetTouches[0].pageX-startX+'px)';这个并没有出现我预料的结果变成......
  • python 字符串变量替换
    >>>ac="mmjj">>>aaa="adfbvbad{}".format(ac)>>>aaa'adfbvbadmmjj'>>>aaa="adfbvbad{}aaa{}".format(ac)Traceback(mostrecentcalllast):File"<pyshell#......
  • 将字符串中的字符分类
    /*需求:将一个字符串中的大写字符小写字符整数字符分别分类出来,并且将各类的字符加起来*/packagecom.字符串;importjava.util.Scanner;publicclass将字符串中的数据......
  • LevelDB源码剖析(2) 编码与字符串
    1.背景编码指的是内存里的整数和字符串放到磁盘上的方式,其主要目的有两个对不定长整数以及字符串能够在读取的时候感知到已经读取完了整个值最大程度的节省在磁盘上占......
  • 字符串模式匹配算法 C++
    #include<iostream>#include<vector>#include<string>usingnamespacestd;//处理模式串,每一个位置都赋值为已匹配的位数vector<int>next_pos(stringpattern){ ......
  • 替换后的最长重复字符 找到字符串中所有字母异位词 无重复字符的最长子串
    424.替换后的最长重复字符滑动窗口记录下当前窗口出现最多的元素的数量,其他的元素在有限次数下能否变成它intn=s.length();if(n<2){returnn;}char[]sArray......
  • #yyds干货盘点# LeetCode 腾讯精选练习 50 题:反转字符串中的单词 III
    题目:给定一个字符串 s ,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。 示例1:输入:s="Let'stakeLeetCodecontest"输出:"s'teLekatedoCteeL......
  • 字符串
    字符串的介绍Python支持使用单引号、双引号和三引号定义字符串,其中单引号和双引号通常用于定义单行字符串,三引号通常用于定义多行字符串。字符串的索引和切片字符串的索引字......
  • Integer转换为日期字符串的方法分享
    转自:​​http://www.java265.com/JavaJingYan/202205/16530565423432.html​​时间是每一个系统开发中必不可少的一部分,那么时间在数据库中的存储也是大有讲究的,如何合理的......
  • 【776】shapely通过文本字符串构建矢量(wkt)
    参考:TheShapelyUserManualwkt:wellknowntext矢量对象通过wkt可以生成文本通过文本可以直接构建矢量对象>>>fromshapelyimportwkt>>>fromshapely.geomet......