[Python Study Notes]字符串处理技巧(持续更新)
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
>>文件: 字符串处理.py
>>作者: liu yang
>>邮箱: liuyang0001@outlook.com
>>博客: www.cnblogs.com/liu66blog ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' #!/usr/bin/env python
# -*- coding: utf-8 -*- import sys, os # 1.字符串的连接和合并
# 相加 //两个字符串可以很方便的通过'+'连接起来
str1='123'
str2='456'
str3=str1+str2
print(str3)
# -----------输出----------------------
# 123456
# ------------------------------------ # 合并//用join方法
url=['www','cnblog','com/liu66blog']
print('.'.join(url))
# -----------输出----------------------
# www.cnblog.com/liu66blog
# ------------------------------------ # 2.字符串的切片和相乘
# 相乘//比如写代码的时候要分隔符,用python很容易实现
Separator='*'*30
print(Separator)
# -----------输出----------------------
# ******************************
# ------------------------------------ # 切片操作
url='www.cnblogs.com/liu66blog'
# 取下标0-15个字符
print(url[0:16])
# 取下标16-最后一个
print(url[16:])
# 取倒数第四个到最后
print(url[-4:])
# 复制字符串
print(url[::])
# -----------输出----------------------
# www.cnblogs.com/
# liu66blog
# blog
# www.cnblogs.com/liu66blog
# ------------------------------------ # 3.字符串的分割
# 普通的分割,用split
# split只能做非常简单的分割,而且不支持多个分隔
url='www.cnblogs.com/liu66blog'
url_list=url.split('.')
print(url_list)
# -----------输出----------------------
# ['www', 'cnblogs', 'com/liu66blog']
# ------------------------------------ # 复杂的分割
# r表示不转义,分隔符可以是;或者,或者/,或者空格后面跟0个多个额外的空格,然后按照这个模式去分割
url='www.cnblogs.com/liu66blog'
import re
url_list=re.split(r'[.;/]\s*',url)
print(url_list)
# -----------输出----------------------
# ['www', 'cnblogs', 'com', 'liu66blog']
# ------------------------------------ # 4.字符串的开头和结尾的处理
# 比方我们要查一个名字是以什么开头或者什么结尾
url='www.cnblogs.com/liu66blog'
result=url.endswith('blog')
print(result)
result=url.startswith('ww.')
print(result)
# -----------输出----------------------
# True
# False
# ------------------------------------ # 5.字符串的查找和匹配
# 一般查找
# 我们可以很方便的在长的字符串里面查找子字符串,会返回子字符串所在位置的索引, 若找不到返回-1
url='www.cnblogs.com/liu66blog'
result=url.find('liu66')
print(result)
result=url.find('liuyang')
print(result)
# -----------输出----------------------
# 16
# -1
# ------------------------------------ # 复杂查找
data_str='2018/2/22'
result=re.match(r'\d+/\d+/\d+',data_str)
if result:
print('ok,存在')
# -----------输出----------------------
# ok,存在
# ------------------------------------ # 6.字符串的替换
# 普通的替换//用replace就可以
url='www.cnblogs.com/liu66blog'
url_new=url.replace('www.','')
print(url_new)
# -----------输出----------------------
# cnblogs.com/liu66blog
# ------------------------------------ # 复杂的替换 利用re.sub函数
url='www.cnblogs.com/liu66blog'
url_new=re.sub(r'\d\d','00',url)
print(url_new)
# -----------输出----------------------
# cnblogs.com/liu00blog
# ------------------------------------ # 7.字符串中去掉一些字符
# 去除空格//对文本处理的时候比如从文件中读取一行,然后需要去除每一行的两侧的空格,table或者是换行符
url=' www.cnblogs.com/liu66blog '
url_new=url.strip()
print(url_new) # 复杂的文本清理,可以利用str.translate,
# 先构建一个转换表,table是一个翻译表,表示把'w'转成大写的'W',
# 然后在old_str里面去掉'liu66',然后剩下的字符串再经过table 翻译
# Python3.4已经没有string.maketrans()了,取而代之的是内建函数:
# bytearray.maketrans()、bytes.maketrans()、str.maketrans()
url='www.cnblogs.com/liu66blog' # 创建翻译表
instr='w'
outstr='W'
table=str.maketrans(instr,outstr) url_new=url.translate(table)
print(url_new)
# -----------输出----------------------
# WWW.cnblogs.com/liu66blog
# ------------------------------------ # 8.找最长的单词
txt='Python is a programming language that lets you work more quickly and integrate your systems more effectively. ' \
'You can learn to use Python and see almost immediate gains in productivity and lower maintenance costs. ' \
'Learn more about Python..'
# 使用空格分隔
txt_list=txt.split(' ')
# 使用sorted()函数按照单词长度排序
txt_list_new=sorted(txt_list,key=lambda x:len(x),reverse=True)
# 定义一个空列表,存储最长的
longest_word=[]
# 判断后面的单词长度
for i,word in enumerate(txt_list_new):
if len(txt_list_new[i])<len(txt_list_new[0]):
break
else:
longest_word.append(txt_list_new[i])
print(longest_word)
# -----------输出----------------------
# ['effectively.', 'productivity']
# ------------------------------------ # 9.找出指定长度的单词
len_4_word=filter(lambda x:5>len(x)>=4,txt_list)
# 注意python3 filter返回不再是列表 需要自己转换!!
len_4_word_list=list(len_4_word)
# 转换成去重元祖
len_4_word_tuple=tuple(set(len_4_word_list))
print(len_4_word_list)
print(len_4_word_tuple)
# -----------输出----------------------
# ['that', 'lets', 'work', 'more', 'your', 'more', 'more']
# ('your', 'more', 'lets', 'that', 'work')
# ------------------------------------ # 10.使用最频繁的单词
from collections import Counter
# most_common(x) x代表列举的个数
print(Counter(txt_list).most_common(6))
# -----------输出----------------------
# [('more', 3), ('and', 3), ('Python', 2), ('is', 1), ('a', 1), ('programming', 1)]
# ------------------------------------ # 11.列出所有大写的单词
title_words_list=[]
for i in txt_list:
if i.istitle():
title_words_list.append(i)
# 得到去重字典
title_words_dict=set(title_words_list)
print(title_words_list)
print(title_words_dict)
# -----------输出----------------------
# ['Python', 'You', 'Python', 'Learn', 'Python..']
# {'Python..', 'Learn', 'Python', 'You'}
# ------------------------------------ # 12.未完待续...
[Python Study Notes]字符串处理技巧(持续更新)的更多相关文章
- [Python Study Notes]字符串操作
字符串操作 a.字符串格式化输出 name = "liu" print "i am %s " % name #输出: i am liu PS: 字符 ...
- fastadmin 后台管理框架使用技巧(持续更新中)
fastadmin 后台管理框架使用技巧(持续更新中) FastAdmin是一款基于ThinkPHP5+Bootstrap的极速后台开发框架,具体介绍,请查看文档,文档地址为:https://doc. ...
- PLSQL Developer 11 使用技巧(持续更新)
PLSQL Developer 11 使用技巧 (持续更新) 目录(?)[-] 首先是我的颜色配置 常用快捷键 提升PLSQL编程效率 按空格自动替换 关闭Window窗口 PLSQL 实用技巧 TI ...
- 【Python】【学习笔记】持续更新
调用模块的两种方式: #方式1 from decimal import Decimal Decimal('1.00') #方式2 import decimal decimal.Decimal('1.0 ...
- Python:常见错误集锦(持续更新ing)
初学Python,很容易与各种错误不断的遭遇.通过集锦,可以快速的找到错误的原因和解决方法. 1.IndentationError:expected an indented block 说明此处需要缩 ...
- [Python Study Notes]CS架构远程访问获取信息--Client端v2.0
更新内容: 1.增加内存信息获取 2.增加电池信息获取 3.增加磁盘信息获取 4.重新布局窗体 5.增加窗体名称 6.增加连接成功之前,不可按压 效果图: '''''''''''''''''''''' ...
- [Python Study Notes]CS架构远程访问获取信息--Client端v1.0
更新内容: 1.添加entry栏默认ip和port口 2.修正退出功能 3.添加退出自动关闭窗口功能 4.优化cpu显示为固定保留两位小数 '''''''''''''''''''''''''''''' ...
- The Python Challenge 谜题全解(持续更新)
Python Challenge(0-2) The Python Challengehttp://www.pythonchallenge.com/ 是个很有意思的网站,可以磨练使用python的技巧, ...
- 个人在 laravel 开发中使用到的一些技巧(持续更新)
1.更高效率地查询:使用批量查询代替 foreach 查询(多次 io 操作转换为一次 io操作) 如果想要查看更详尽的介绍,可以看看这篇文章 什么是 N+1 问题,以及如何解决 Laravel 的 ...
随机推荐
- lodash源码分析之缓存使用方式的进一步封装
在世界上所有的民族之中,支配着他们的喜怒选择的并不是天性,而是他们的观点. --卢梭<社会与契约论> 本文为读 lodash 源码的第九篇,后续文章会更新到这个仓库中,欢迎 star:po ...
- 全新的软件项目,好的开始决定了成功一半!(需求&计划)
刚看完“无问西东”,电影里说人总归还是要留下些足迹(文字)的,那么赶紧跑图书馆来留下些文字. 最近去瑞士启动了一个新的项目,那么早上做项目,晚上总结留下了一张张思维导图来记录当时的感受, 手稿如下,字 ...
- 数据库分表之Mybatis+Mysql实践(含部分关键代码)
2018年01月31日 随着我们系统用户数量的日增,业务数据处于一个爆发前,增长的数据量已经给我们的系统造成了很大的不确定.在上个周末用户量较多,并发较大的情况下,读写频繁的验证码表,数据量 ...
- linkin大话面向对象--封装和隐藏
软件开发追求的境界:高内聚,低耦合 高内聚:尽可能把模块的内部数据,功能实现细节隐藏在模块内部独立完成,不允许外部直接干预 低耦合:仅暴露少量的方法给外部使用 到底为什么要对一个雷或者对象实现良好的封 ...
- C语言学习之选择排序
上一篇文章中讲C语言排序中的比较常见的(交换)冒泡排序,那么这篇文章也将以新手个人的经历来讲同样比较常见而实用的数组排序之选择排序. 选择排序,从字面上看是通过选择来进行排序.其实它的用法就是通过选择 ...
- java从文件中读取json
wangxiaoer.json里面存放了json数据 需要依赖common-io.jar
- PHP与XML
代码: <?php $dom= new DomDocument('1.0'); $books=$dom->appendChild($dom->createElement_x_x('b ...
- awkOFS问题
awk改变了OFS,$0却没变化一个文件1.txt,内容如下 a b c d e 目的把列变行,输出为: a b c d e 脚本如下: awk 'BEGIN{RS="";FS=& ...
- 【转】高斯-克吕格投影与UTM投影异同
高斯-克吕格(Gauss-Kruger)投影与UTM投影(Universal Transverse Mercator,通用横轴墨卡托投影)都是横轴墨卡托投影的变种,目前一些国外的软件或国外进口仪器的配 ...
- 面向对象_05【类的继承:extends、重写父类】
类的继承:现有类的基础上构建一个新的类,构建出来的类被称作子类,子类可继承父类的属性和方法. 什么时候定义继承?当类与类之间存在着所属关系的时候,就定义继承.xxx是yyy中的一种==>xxx ...