1.先了解下切片的知识点

切片是str, list,tuple中常用的取部分元素的操作。

例如:

  1 L =['北京', '上海', '天津', '深圳', '石家庄']
2 print(L[0:2]) # 从第0的索引位置开始到第2个索引位置,但是不包括第2个索引位置。类似数学中的集合半闭半开[)
3 print(L[:-1]) # 支持倒序>len(L) - 1的索引位置等于-1的索引;即len(L) - i的索引位置等于-i的索引

2.实现trim函数

方法一:采用一个循环同时从str的开始和结束的索引位置向中间遍历,遇到非空的结束。记录下顺序遍历和倒序遍历的位置,然后使用slice返回部分字符串

  1 def trim(s):
2 s_len = len(s)
3 low_move = True
4 low = 0
5 high = s_len
6 high_move = True
7 for i in range(s_len):
8 if s[i] != ' ' and s[s_len - i - 1] != ' ':
9 break
10
11 if low_move and s[i] == ' ':
12 low = i + 1
13 else:
14 low_move = False
15
16 if high_move and s[s_len - i - 1] == ' ':
17 high = s_len - i - 1
18 else:
19 high_move = False
20 return s[low:high]

方法二:采用一个循环同时从str的开始和结束的索引位置向中间遍历,遇到空字符,直接利用slice改变该字符串,去掉空字符。

  1 def trim(s):
2 s_len = len(s)
3 for i in range(s_len):
4 if s[:1] == ' ':
5 s = s[1:]
6 if s[-1:] == ' ':
7 s = s[:-1]
8 return s

3. 验证函数是否正确

  1 # 测试:
2 if trim('hello ') != 'hello':
3 print('1测试失败!')
4 elif trim(' hello') != 'hello':
5 print('2测试失败!')
6 elif trim(' hello ') != 'hello':
7 print('3测试失败!')
8 elif trim(' hello world ') != 'hello world':
9 print('4测试失败!')
10 elif trim('') != '':
11 print('5测试失败!')
12 elif trim(' ') != '':
13 print('6测试失败!')
14 else:
15 print('7测试成功!')

【Pthon入门学习】利用slice实现str的strip函数,类似C#中的string.trim的更多相关文章

  1. 【Pthon入门学习】99乘法表

    学习知识点: 1. string.join(seq): 以string字符串作为分隔符,将seq的所有元素拼接成一个新的字符串 s = ['%d * %d = %d' % (y, 4, 4*y) fo ...

  2. 【Pthon入门学习】多级菜单小例子

    menu_list = { '北京':{ '昌平':{ '回龙观':{ '和谐家园':{}, '矩阵小区':{}, '北店家园':{} }, '沙河':{ '北街家园1区':{}, '北街家园2区': ...

  3. Golang入门学习(四):常用的函数汇总

    文章目录 2.4 常用的内置函数 2.4.1 字符串常用内置函数 2.4.2 常用的时间和日期相关函数 2.4.3 内置函数 2.4 常用的内置函数 2.4.1 字符串常用内置函数 https://g ...

  4. MATLAB入门学习(整合)

    整合一下,都是链接地址: MATLAB入门学习(一):初次使用.. MATLAB入门学习(二):矩阵相关 MATLAB入门学习(三):矩阵常用函数 MATLAB入门学习(四):编写简单.m文件和函数文 ...

  5. 第15.41节、PyQt(Python+Qt)入门学习:输入部件QComboBox组合框功能详解

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.概述 Designer中输入工具部件中的Combo Box组合框与 ...

  6. python入门学习笔记(三)

    10.函数 求绝对值的函数 abs(x) 也可以在交互式命令行通过 help(abs) 查看abs函数的帮助信息.调用 abs 函数:>>> abs(100)100>>& ...

  7. TensorFlow入门学习(让机器/算法帮助我们作出选择)

    catalogue . 个人理解 . 基本使用 . MNIST(multiclass classification)入门 . 深入MNIST . 卷积神经网络:CIFAR- 数据集分类 . 单词的向量 ...

  8. opengl入门学习

    OpenGL入门学习 说起编程作图,大概还有很多人想起TC的#include <graphics.h>吧? 但是各位是否想过,那些画面绚丽的PC游戏是如何编写出来的?就靠TC那可怜的640 ...

  9. Aho-Corasick算法、多模正则匹配、Snort入门学习

    希望解决的问题 . 在一些高流量.高IO的WAF中,是如何对规则库(POST.GET)中的字符串进行多正则匹配的,是单条轮询执行,还是多模式并发执行 . Snort是怎么组织.匹配高达上千条的正则规则 ...

随机推荐

  1. EF Core 2.1 支持数据库一对一关系

    在使用EF Core和设计数据库的时候,通常一对多.多对多关系使用得比较多,但是一对一关系使用得就比较少了.最近我发现实际上EF Core很好地支持了数据库的一对一关系. 数据库 我们先来看看SQL ...

  2. 线程队列-queue

    使用队列的目的: 解耦,使程序之间实现松耦合:提高处理效率   FIFO = 先进先出,first in first out LIFO = 后入先出,last in first out   生产者消费 ...

  3. javascript 中x++和++x的不同

    x++和++x都是给x加一,但是前者是完成赋值之后再递增x,后者相反. 例如:如果x是5,y=x++会将y设置为5,x设置为6:而y=++x会将x和y都设置为6.

  4. Windows 安装 MySQL 8.0.11

    下载并解压 从官方网站下载最新安装包 解压到目标安装目录 新建配置文件 在安装目录新建my.ini文件 添加如下内容(需修改为自己的配置) #----------------------------- ...

  5. mysql 生成UUID() 即 ORACLE 中的guid()函数

    MYSQL 生成UUID 即 guid 函数-- 带 - 的UUIDselect UUID() -- 去掉 - 的UUIDselect replace(uuid(),'-','') 一个表的数据插入另 ...

  6. HTML5 添加视频和音频(响应式视频)

    最初的 HTML5规范呼吁所有浏览器内置支持使用 Ogg格式① 直接播放视频或音频(无需插件).但是由于 HTML5工作组的内部争议,曾经作为基线标准的支持 Ogg(包括 Theoravideo 和 ...

  7. redis-数据类型及命令

    redis五大数据类型:string(字符串),hash(哈希,类似java的Map),list(列表),set(集合),zset(有序集合) 1.redis的键(key) keys 查询数据库中的k ...

  8. MongoDB可视化工具RoboMongo

    官网下载安装包:https://robomongo.org/download (开始使用的是mongoVUE,研究半天,最后发现貌似已经挂掉了,坑!后来上手的robomongo) 安装没什么说的,一直 ...

  9. 学习tp5的第二天(路由)

    一.学习路由 1.phpstudy版本的环境去掉indx.php 直接访问url phpstudy配置的环境需要设置 入口目录的 .htaccess文件如下: <IfModule mod_rew ...

  10. Python-type函数使用