Python 字符串操作之字符串的截取_python字符串截取-程序员宅基地

技术标签: c#  python  开发语言  

字符串的截取

字符串的截取是实际应用中经常使用的技术,被截取的部分称为“子串”。Java中使用函数substr()获取子串,C#使用函数substring()获取子串。而Python由于内置了序列,可以通过前面介绍的索引、切片获取子串,也可以使用函数split()来获取。字符串也属于序列。

下面这段代码使用序列的索引获取子串:

 

# 使用索引截取子串

print('----------# 使用索引截取子串---------')

word = 'world'

print(word[4])

【代码说明】第4行代码,访问字符串第5个字符的值。输出结果为“d”。

【运行结果】

 通过切片可以实现对字符串有规律的截取。切片的语法格式如下所示。

string[start : end : step]

【代码说明】其中string表示需要取子串的源字符串变量。[start:end:step]表示从string的第start个索引位置开始到第end个索引之间截取子串,截取的步长是step。即每次截取字符string[start+step],直到第end个索引。索引从0开始计数。

下面这段代码演示了使用切片截取子串的功能:

 

# 特殊切片截取子串

print('---------# 特殊切片截取子串----------')

str1 = 'hello world'

print(str1[0:3])

print(str1[::2])

print(str1[1::2])

str2 = 'ABCDEFG'

print(str2[:3])

print(str2[3:])

print(str2[::2])

print('-----------------------------------')

【代码说明】

第10行代码,截取字符串中第1个字符到第3个字符之间的部分。

第11行代码,[::2]切片省略了开始和结束字符。从字符串的第1个字符开始,以2为步长逐个截取字符。

第12行代码,切片中的数字1表示从字符串的第2个字符开始取字符,数字2表示以2为步长逐个截取字符。

【运行结果】

 如果要同时截取多个子串,可以使用函数split()实现。函数split()的声明如下所示。

split([char] [,num])

【代码说明】

参数char表示用于分割的字符,默认的分割字符是空格。

参数num表示分割的次数。如果num等于2,将把源字符串分割为3个子串。默认情况下,将根据字符char在字符串中出现的个数来分割子串。

函数的返回值是由子串组成的列表。

代码如下:

 

# 使用split()获取子串

print('-----------# 使用split()获取子串-----')

sentence = "Tom said: a,b,c,d."

print('使用空格获取子串:', sentence.split())

print('使用逗号获取子串:', sentence.split(','))

print('使用逗号获取3个子串:', sentence.split(',', 2))

sentence1 = 'Uzi tell us : he is king and said : A, B, C, D.'

print('使用空格获取子串:', sentence1.split())

print('使用逗号获取子串:', sentence1.split(','))

print('使用空格获取4个子串:', sentence1.split(' ',3))

print('-----------------------------------')

【代码说明】

第22行代码根据空格来获取子串。字符串sentence中有5个空格,将返回由6个子串组成的列表。

第23行代码根据逗号来获取子串。字符串sentence中有3个空格,将返回由4个子串组成的列表。

第24行代码根据逗号来分割字符串,并把字符串sentence分割为3个子串。

【运行结果】

 

字符串连接后,Python将分配新的空间给连接后的字符串,源字符串保持不变。

 

# 字符串连接后,Python将分配新的空间给连接后的字符串,源字符串保持不变。

print('字符串连接后,Python将分配新的空间给连接后的字符串,源字符串保持不变。')

str3 = "a"

print(id(str3))

print(id(str3 + "b"))

print('-------------------------------------')

【代码说明】

第2行代码输出str1的内部标识。输出结果为“4337916312”。

第3行代码,进行字符串连接,新的字符串将获得新的标识。输出结果为“4337800168”。

【运行结果】

 

ALL:

 

运行结果ALL:

 

-------------------end--------------------

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_42751978/article/details/129617723

智能推荐

android 视图动画遇到的坑_android view有动画时执行invisible-程序员宅基地

文章浏览阅读1.6k次。Android中视图动画使用率越来越少了,很多大神都使用属性动画了。但个人觉得视图动画比属性动画使用起来更简单,所以能用视图动画实现的就不考虑用属性动画。 今天在项目中使用视图动画时,遇到了几个坑,记录下来,供踩到同样坑的同学参考一下~一、平移与缩放冲突 使用视图动画,常使用到动画集合AnimationSet,然后在动画集合中添加平移、绽放,旋转等动画。_android view有动画时执行invisible

Anaconda新手使用教程_anaconda使用教程-程序员宅基地

文章浏览阅读4.6w次,点赞102次,收藏897次。Anaconda使用教程一(新手友好)前言一、python和包以及anaconda的概念关系关于python与包关于anaconda二、Anaconda安装问题对windows三、Anaconda使用问题配置Anaconda源可能出现的错误conda install 仍然出现下载速度慢的错误四、Anaconda创建虚拟环境并使用创建你的第一个环境查看当前conda所有环境激活你的环境在你的环境中用conda或者pip安装包查看环境中现有的包在环境中运行python程序(windows系统)退出当前环境删除环_anaconda使用教程

hdu 3496 二维费用背包_hdu - 3496-程序员宅基地

文章浏览阅读1k次。题意:求在一定l时间内看完n中电影中的m是否可能,若可能则最后快乐度是多少。之前错了好多遍,一直找不到原因,后来在百度上看了很多别人的代码发现只有初始化不同我的初始化: memset(f,0,sizeof(f));别人的: for(int i=0;i for(int j=0;j一开始认为没什么影响,但是苦于一直找不到原因,所以我将自_hdu - 3496

Random、SecurityRandom、Math.random()_securerandom和math.random()-程序员宅基地

文章浏览阅读2k次。下面可以不看,一句话,为了其安全起见,以后我们就用SecurityRandom就好了。JDK中有两个随机数类。一个是PRNG,也就伪随机数类java.util.Random,是采用线性同余算法产生的。另一个是RNG,也就是java.util.Random的子类强随机数java.security.SecureRandom,这是一个SPI类,也就是说具体的算法由Pro..._securerandom和math.random()

npm安装vue报错:npm ERR! code ETIMEDOUT-程序员宅基地

文章浏览阅读8k次,点赞8次,收藏8次。npm安装vue报错npm ERR! code ETIMEDOUT_code etimedout

Linux解决Warning: mysql_connect(): Headers and client library minor version mismatch. 警告_mysql headers:50647-程序员宅基地

文章浏览阅读5k次。这两天用阿里云服务器重新部署网站服务器后,打开某php页面出现了如下警告:Warning: mysql_connect(): Headers and client library minor version mismatch. Headers:50547 Library:50631 in /XXX(某某目录)/wp-db.php on line 1520,虽然是警告,但是有的界面会因此打不开,无法..._mysql headers:50647

随便推点

CentOS 7 如何为 PHP 5.6 安装 MSSQL 扩展_宝塔面板centos7/php5.6安装mssql扩展-程序员宅基地

文章浏览阅读4.9w次。背景前两天写了一篇文章 OSX MAMP 如何为 PHP 5.6 安装 MSSQL 扩展,讲的是自己的个人电脑,也就是开发环境如何为 PHP 5.6 安装 MSSQL 扩展,现在要上生产了,继续讲讲怎么给 CentOS7 安装 PHP - MSSQL 扩展。运行环境操作系统CentOS Linux release 7.8.2003 (Core)集成环境宝塔PHP 5.6.40步骤和之前一样,我们先来整理一下整体的步骤:1、安装 freetds2、安装 mssql.so 扩展(p_宝塔面板centos7/php5.6安装mssql扩展

Android的jsoup方法,Android HTML Jsoup解析速度-程序员宅基地

文章浏览阅读147次。这是交易 . 在我的Android应用程序中,我正在使用Jsoup进行一些网络抓取 . 现在它工作正常,但它太慢了 . 我在我的代码中做的是:通过Jsoup中的POST方法登录页面;获取cookie;通过重用cookie,我将浏览6页(POST和GET)并抓取它们(主要是表格和大量行 . 我的意思是很多......所以,真的很多foreach循环);将所有必需的数据写入SQLiteDatabase..._jsoup速度太慢

湖仓方案DeltaLake、Hudi、Iceberg功能对比_星环胡仓一体和hudi对比-程序员宅基地

文章浏览阅读2.6k次。湖仓方案DeltaLake、Hudi、Iceberg功能对比_星环胡仓一体和hudi对比

64位 编译 OpenCV 常见错误_m_pi' was not declared in this scope-程序员宅基地

文章浏览阅读3.7k次。编译 OpenCV打开终端进行编译:(-j 是使用 8 个线程进行编译,请根据你的计算机配置合理设置线程数)E:cd E:\opencv_341\opencv_mingw64_buildmingw32-make -j 8mingw32-make install如果 mingw32-make -j 8遇到错误,请看下面的 编译 OpenCV 常见错误,否则执行 mingw32-make..._m_pi' was not declared in this scope

上手指南 | Jetpack Hilt 依赖注入框架_hilt 使用 broadcastreceiver-程序员宅基地

文章浏览阅读2.7k次,点赞5次,收藏6次。Hilt 是 Android 的依赖注入库,是基于 Dagger 。可以说 Hilt 是专门为 Andorid 打造的。_hilt 使用 broadcastreceiver

php 解压安装程序,解压缩各种安装程序包-程序员宅基地

文章浏览阅读97次。解压缩各种安装程序包文:tracky来源:http://bbs.hanzify.org/index.php?showtopic=24638&hl=点击:2578解压缩各种安装程序包1 微软的Installer制作的安装包,后缀一般是msi,mspA 可以用totalcmd 的msiplus插件,可以解压。不可以修改msi。B 可以用WinINSTALL LE 2003,在w..._php软件压缩包安装