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. C++笔记016:const 基础

    原创笔记,转载请注明出处! 点击[关注],关注也是一种美德~ 笔记十六关于const关键字,在C语言和C++中const的表现是不同的. 先看一下const基础知识. 对const的初级理解:cons ...

  2. 【转】如何快速定位JVM中消耗CPU最多的线程?

    [转]如何快速定位JVM中消耗CPU最多的线程? https://mp.weixin.qq.com/s?__biz=MzIwMzg1ODcwMw==&mid=2247487802&id ...

  3. python里的默认参数

    def extendList(val, test=[]): test.append(val) return test list1 = extendList(10) list2 = extendList ...

  4. ionic ios 打包 真机测试常见问题

    1.ionic 项目在windows下正常打包安卓包时  迁移到mac下打包ios时  不需要复制平台目录platforms即可  不用再mac下去安装各种插件信息 2.ionic 下不能访问api信 ...

  5. flask中的蓝图实现模块化的应用

    Blueprint 蓝图的基本设想是当它们注册到应用上时,它们记录将会被执行的操作. 当分派请求和生成从一个端点到另一个的 URL 时,Flask 会关联蓝图中的视图函数. 简单来说,Blueprin ...

  6. 我们比较常见的PHP实现openSug.js参数调试

    这是一款利PHP对百度搜索下拉框提示免费代码实现参数配置调试的程序源代码. 由想要对网站进行搜索下拉调试的站长朋友们进行方便.快速的效果演示,具体参考下面的PHP代码. 如何使用? 请新建一份PHP文 ...

  7. 如何使用yii2的缓存依赖特性

    目录 如何使用yii2的缓存依赖特性 概述 页面缓存 缓存依赖 链式依赖 总结 如何使用yii2的缓存依赖特性 概述 缓存是Yii2的强大特性之一,合理使用缓存技术可以有效地减小服务器的访问压力.Yi ...

  8. Vue2.5入门-1

    vue如何引用和使用,实例和挂在点的介绍 <!DOCTYPE html> <html> <head> <title>vue 入门</title&g ...

  9. 几个并发的术语解释——QPS,TPS,PV

    从英文全称翻译出字面意思就OK啦!  PV=page view TPS=transactions per second QPS=queries per second RPS=requests per ...

  10. OO原则汇总

    SOLID原则:http://www.cnblogs.com/lanxuezaipiao/archive/2013/06/09/3128665.html https://www.cnblogs.com ...