c++ 传入字符串 带返回值_python的数据类型(三):字符串
各位童鞋很抱歉,由于这段时间比较忙,好久没更新了。今天终于有空来继续跟各位童鞋一起学习python。
之前讲到,字符串的定义就是把一些字符序列用引号引起来。例如:
s = 'abc'
上面这行代码的执行过程:先创建一个字符串对象,并初始化里面字符串的值为'a', 'b', 'c'的序列,再把指针s指向这个对象。如下图所示:
字符串的序列操作
我们知道字符串内部是一个字符序列。作为序列,我们可以用下标来索引。例如:
c = s[0] # c = 'a'
c = s[1] # c = 'b'
还可以从字符序列的末尾开始索引,-1代表最后一个字符,-2代表倒数第二个字符,... 例如:
c = s[-1] # c = 'c'
c = s[-2] # c = 'b'
另外字符串还支持切片(slice)操作,取出给定两个下标之间的字符序列(包括开始下标的字符,但不包括结束下标的字符。用数学区间的[a:b)来描述是不是更清楚点呢)。例如:
c = s[0:2] # c = 'ab'
c = s[1:2] # c = 'b'
c = s[1:-1] # c = 'b'
这一点很像verilog的位宽操作,例如:reg s[7:0] = 8'h5a,那我们可以c = s[3:0]来取出3到0位的4'ha。只是verilog是闭区间的。
在切片时,当开始下标是0,冒号前的下标可以省略;结束下标指向最后一个元素,冒号后的下标也可省略。所以上面的切片可以简化成:
c = s[:2] # c = 'ab'
c = s[1:] # c = 'bc'
当开始下标和结束下标都省略时,s[:]表示整个字符序列'abc'。
注意理解 s[1:-1]和s[1:]的区别,前者不包括最后一个字符,而后者包括。
作为字符序列,还支持拼接和重复操作。例如:
s1 = 'abc'
s2 = s1 + 'def' # s2 = 'abcdef'
s3 = s1 * 3 # s3 = 'abcabcabc'
另外我们要注意字符序列的只读性。我们不可以对字符赋值,s[0] = 'd'是非法的。但我们可以迂回:
s = 'abc'
s = 'd' + s[1:]
但要注意,第二句并不是简单的修改s对象的元素值,而是用拼接产生了一个全新对象,并让s指向新的对象。
字符串类型的操作
除了序列操作外,字符串本身作为一种类,自带了很多操作函数(类的方法)。下表列出了一些常用的操作:
index, find
position = index(substr, begin=0, end=len(string))
position = find(substr, begin=0, end=len(string))
描述:index和find函数的作用相同,都是查找子字符串。可以指定开始和结束索引,在一个范围内查找。
返回值:子字符串的起始索引值。index和find的区别是,当没有找到子字符串时,index报错,而find返回-1。
例如:
s = 'abcdefdef'
p1 = s.find('de') # p1 = 3
p2 = s.index('de', 5) # p2 = 6
replace
str_new = replace(substr_old, substr_new[, max])
描述:替换函数,如其名,查找子字符串substr_old,替换成substr_new。第三个参数是可选的,指定替换的最大次数,默认是全部替换。
返回值:返回替换后的新字符串。
例如:
s = 'abcdefdef'
s1 = s.place('de', 'gh') # s1 = 'abchgfhgf'
s2 = s.place('de', 'gh',1) # s1 = 'abchgfedf'
split
list = split(str=' ', num)
描述:split函数用分隔字符str把字符串拆分成若干个子字符串。num指定拆分多少次,若没有指定次数,则为全部拆分。
返回值:拆分后的子字符串列表(下一次我们将要学习列表)。
例如:
s = 'I am learning python'
list1 = s.split(' ') # list1 = ['I', 'am', 'learning', 'python']
list1 = s.split(' ', 2) # list1 = ['I', 'am', 'learning python']
upper, lower
str_new = upper()
str_new = lower()
描述:把字符串转成大写或小写。
返回值:大小写转换后的新字符串。
例如:
s = 'abc'
s1 = s.uppper() # s1 = 'ABC'
s2 = s1.lower() # s2 = 'abc'
strip, lstrip, rstrip
str_new = strip(char=' ')
str_new = rstrip(char=' ')
str_new = lstrip(char=' ')
描述:strip函数用来去除头或尾部的指定字符,默认是去掉空格。
返回值:返回处理后的新字符串。
例如:
s = ' abc\n'
s1 = s.lstrip() # s1 = 'abc\n'
s2 = s1.rstrip('\n') # s2 = 'abc'
startswith, endswith
boolean = startswith(str, begin=0, end=len(string))
boolean = endswith(str, begin=0, end=len(string))
描述:检查字符串是否以str开头或结尾,可以在指定范围内检查。
返回值:如果检查到,返回True,否则返回False。
例如:
s = 'clk_a'
b1 = s.startswith('clk') # b1 = True
s = 'rst_n'
b2 = s.endswith('_n') # s2 = True
format
str_new = '{}{}...'.format(arg1, arg2, ...)
描述:format用来把其它数字、字符串、甚至对象等格式化成字符串。大括号{}用来指定名称、位置、数字的格式等。
返回值:格式化后的新字符串。
例如:
s = 'I am learning {lang}'.format(lang='python') # s = 'I am learning python'
s = '{0} {1} {0}'.format('face', 'to') # s = 'face to face'
s = '{} {} {}'.format('I', 'love', 'python') # s = 'I love python'
第一种,按名称替换。
第二种,按位置替换。
第三种,默认按位置替换,也是最常见的替换方式。
是不是有点像verilog的模块例化?可以按名称,也可以按位置。
format数字格式化
数字格式化成字符串的规则如下表:
例如:
s = "8'h{:0>2x}".format(15) # s = "8'h0f"
s = '{:.2%}'.format(3 / 9) # s = "33.33%"
可能有童鞋要问了“字符串内置这么多函数,一下也记不住啊?” 所以下面内容非常重要(敲黑板)。
1. 怎么看string还内置其它什么函数?
s = 'abc'
print(dir(s))
dir()是一个内置函数,能够查看类的所有属性和方法。结果如下:
2. 那怎么查看具体函数的使用方法呢?
python已经考虑到这个问题了,不需要百度、不需要查看源代码,只需要调用help()函数。例如:
print(help(s.find))
将打印出下面的内容:
有没有被python的贴心功能感动呢?
下一次我们将学习python的列表。
--------------------
欢迎关注ExASIC. 分享芯片数字集成电路设计中的经验和方法。Sharing makes work smoother.
c++ 传入字符串 带返回值_python的数据类型(三):字符串相关推荐
- 定义一个带参带返回值的方法,实现输出随机数数组
public class mains { public static void main(String[] args) { // 创建对象,对象名为hello mains hello = new ma ...
- python装饰器返回值_Python之装饰器
定义:装饰器本质上就是一个python函数,他可以让其他函数在不需要做任何代码变动的前提下,增加额外的功能,装饰器的返回值也是一个函数对象. 应用场景:比如插入日志.性能测试.事务处理.缓存.权限校验 ...
- Java05-day05【方法(概述、调用过程图解)、带参方法、带返回值方法、重载、方法参数传递(基本类型、引用类型)】
java零基础入门到精通(2019版)[黑马程序员] 视频+资料:[链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg 提取码:zjxs] &qu ...
- android cursor 实例化,为什么Cursor放到带参数带返回值方法里就报错?
完整代码如下: 其中有大部分的代码被注释,那是可以成功运行的. 后来我想啊,游戏有好多种,但是需要统计的内容是一样的. 我就想传参 然后获得返回值的方式 来减少代码量啊. 但是把相关的查询代码放到 带 ...
- 实验3.1 简单实现Intent带返回值的跳转
在这里实现的功能是当点击listview的某一子项是,启动一个确认删除相应记录的子Activity. 所以用到了带返回值的intent 父界面和子界面的前台代码 activity_main <? ...
- Mysql带返回值与不带返回值的2种存储过程
过程1:带返回值: 1 drop procedure if exists proc_addNum; 2 create procedure proc_addNum (in x int,in y int, ...
- c# 带返回值的action_C#委托的介绍(delegate、Action、Func、predicate)
委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递.事件是一种特殊的委托. 1.委托的声明 (1). delegate delegate我们常用到的一种声明 Delegat ...
- 编写一个C程序,实现以下功能:编写一个常规的函数和一个递归函数,两个函数均能将输入的一个字符串以按反序形式的字符串作为返回值。在main函数中输入一行字符串,分别调用两个函数,输出反序后的字符串。
题目要求: 编写一个C程序,实现以下功能:编写一个常规的函数和一个递归函数,两个函数均能将输入的一个字符串以按反序形式的字符串作为返回值.在main函数中输入一行字符串,分别调用两个函数,输出反序后的 ...
- c++中带返回值函数没写return能通过编译但运行时会出现奇怪问题
c++中带返回值函数没写return能通过编译但运行时会出现奇怪问题 例如: string myFunc(){ theLogics(); } 发现调用: myFunc(); 崩溃. 但调用: cout ...
最新文章
- 【linux】Valgrind工具集详解(四):抑制错误
- 何将ext中的FormPanel中,所有组件都居中放置?
- dwr和ajax的区别,dwr的ajax实现
- vaadin教程_Vaadin教程
- linux网络编程之-----基础理论篇
- 在Blazor中构建数据库应用程序——第6部分——向天气应用程序添加新记录类型及其UI
- ProxySQL 常见表配置
- python公共变量声明_Python变量声明
- 设计模式网站 http://www.cnblogs.com/justinw/archive/2007/02/06/641414.html
- 如何通过代码设置WPF控件的字体,颜色
- 计算机ping使用的端口,mac系统ping端口命令怎么使用
- 【产品】蓝绿发布、滚动发布和灰度发布对比
- MySQL基础之二 | 详解(SQL-DDL)
- VS Code PHP代码提示和格式化插件 IntelliSense安装使用
- 那些年你追过的女神:开发人员应该懂多少运维
- openwrt 遍译php_【教程笔记】用OpenWRT单独编译ipk插件
- 微信中最让你恶心的一项功能是什么
- python Png图片压缩工具
- 压力眼这一Part,久等啦!
- Unity内存与资源管理
热门文章
- 网御神州和北京邮电大学成立信息安全联合实验室(2007-07-04)
- Spring框架整合多数据源 Mysql+oracle
- IONIC打包安卓遇到COM.ANDROID.SUPPORT:SUPPORT-V4错误的解决办法
- HttpWebRequest的timeout和ReadWriteTimeout
- java设计模式(五)--建造者模式(Builder)
- Delphi 取整函数round、trunc、ceil和floor
- Android之ViewPager中包含ViewFlipper时实现双滑动嵌套解决父控件干扰问题
- Wix学习整理(6)——安装快捷方式
- 使用Javascript在Leetcode中的ACM模式下无法获取输入数据的问题
- Xshell不能链接虚拟机(可ping通)--解决方案