Python文本处理简单易懂方法解析


Posted in Python onDecember 19, 2019

这篇文章主要介绍了Python文本处理简单易懂方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

自从认识了python这门语言,所有的事情好像变得容易了,作为小白,逗汁儿今天就为大家总结一下python的文本处理的一些小方法。

话不多说,代码撸起来。

python大小写字符互换

在进行大小写互换时,常用到的方法有4种,upper()、lower()、capitalize() 和title()。

str = "www.dataCASTLE.com"
print(str.upper())# 把所有字符中的小写字母转换成大写字母
print(str.lower())# 把所有字符中的大写字母转换成小写字母
print(str.capitalize())# 把第一个字母转化为大写字母,其余小写
print(str.title())# 把每个单词的第一个字母转化为大写,其余小写 
WWW.DATACASTLE.COM
www.datacastle.com
Www.datacastle.com
Www.Datacastle.Com

还可以同时进行大小写互换:

s="hGdssWW678qqfdDDD777f8888sD8FJJss jjYYhVV #sh&" 
def fn(x):
  if x.is lower():
    return x.upper()
  elif x.is upper():
    return x.lower()
  else:
    return x
result=''.join([fn(r) for r in list(s)])
print(result)
HgDSSww678QQFDddd777F8888Sd8fjjSS JJyyHvv #SH&

在s当中,不仅有大小写字母,还有数字,符号作为干扰,运用代码成功将大小写进行了互换。

行列互换

01 :insert进行A行与N行的互换

with open('D:
.txt','r') as f:
  txt=f.readlines()
  txt.insert(4,txt[1])#第二行插入第五行的位置
  del(txt[1])#删除原来的第二行
  print(txt)
1  A  一 
3  C  三 
4  D  四 
2  B  二 
5  E  五 
6  F  六

02: 矩阵的行列互换

matrix = [[1, 1, 1, 1],
         [2, 2, 2, 2],
         [3, 3, 3, 3],]

trans = []
for i in range(4):
  trans.append([row[i] for row in matrix])

print('', trans)
 [[1, 2, 3], 
 [1, 2, 3], 
 [1, 2, 3], 
 [1, 2, 3]]

关于行列互换的情况,python有一个很好用的库pandas,其中的操作非常简便,可以到之前的文章”十分钟上手pandas“中查看。

实现快速排序

快排的思想:首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。

01:超级"简短"的python实现的快速排序,一行代码轻松实现快速排序。

def quickSort(arg):
  if(arg==[]):
     return []
  return quickSort([i for i in arg[1:] if i<=arg[0]])+[arg[0]]+quickSort([i for i in arg[1:] if i>arg[0]])
print quickSort([11,22,8,23,7,33,13,28,66,777])
[7, 8, 11, 13, 22, 23, 28, 33, 66, 777]

02:一般快排实现

def quicksort(array, left, right):
  #建立递归终止条件
  if left >= right:
    return
  low = left#low为序列左边要移动的游标
  high = right#high为序列右边要移动的游标
  key = array[low]#将左边的数设为基准元素

  while left < right:
    # 当left与right未重合,并且比基准元素要大,就将游标向左移动
    while left < right and array[right] > key:
      right -= 1
    # 如果比基准元素小,就跳出循环,并且把其放在基准元素左边
    array[left] = array[right]

    # 当low与last未重合,并且比基准元素要小,就将游标向右移动
    while left < right and array[left] <= key:
      left += 1
    # 如果比基准元素大,就跳出循环,并且把其放在基准元素右边
    array[right] = array[left]

  # 当low与last相等,就是基准元素的排序位置
  array[right] = key

  # 对排序好的元素左右两边的序列进行递归
  quicksort(array, low, left - 1)
  quicksort(array, left + 1, high)

array = [11,22,8,23,7,33,13,28,66,777]
print("Quick Sort: ")
quicksort(array,0,len(array)-1)
print(array)
[7, 8, 11, 13, 22, 23, 28, 33, 66, 777]

03:《算法导论》中的快排程序

def quicksort(array, l, r):
  if l < r:
    q = partition(array, l, r)
    quick_sort(array, l, q - 1)
    quick_sort(array, q + 1, r)

def partition(array, l, r):
  x = array[r]
  i = l - 1
  for j in range(l, r):
    if array[j] <= x:
      i += 1
      array[i], array[j] = array[j], array[i]
  array[i + 1], array[r] = array[r], array[i+1]
  return i + 1
array = [11,22,8,23,7,33,13,28,66,777]
print("Quick Sort: ")
quicksort(array,0,len(array)-1)
print(array)
[7, 8, 11, 13, 22, 23, 28, 33, 66, 777]

04:python对list有一个内置函数sorted()排序

a = [11,22,8,23,7,33,13,28,66,777]
b=sorted(a)
print(b)
print(a)

[7, 8, 11, 13, 22, 23, 28, 33, 66, 777]
[11, 22, 8, 23, 7, 33, 13, 28, 66, 777]

sorted虽然是使用函数方法进行排序,但是效果非常好。使用sorted函数进行排序,不会改变a原有的排序,并且当文本中有其余字母符号等干扰时,也可以成功的将数字进行排序。

文本对齐

有些时候我们得到的文本可能是混乱的,需要进行对齐处理,关于对齐有以下几种方法:

01:format格式化对齐

# format格式化对齐
def f1():  
  with open("D:
.txt","r") as f:
    for s in f:
      l=s.rsplit ()
      #左对齐,填充符号自定
      t='{0:<5} {1:<7} {2}'.format(l[0],l[1],l[2])  
      print(str(t))
f1()

111   ABC     西瓜
22222 AABBC   水蜜桃
3333  CSDDGFF 香蕉
44    QQQSED  波罗蜜

02:just对齐

#just对齐
r=''
def f2():
  f=open("D:
.txt","r")
  for s in f:
    l=s.rsplit() #通过指定分隔符对字符串进行切片
    print(l[0].ljust(5," "),l[1].ljust(7," "),l[2])
f2()

111   ABC     西瓜
22222 AABBC   水蜜桃
3333  CSDDGFF 香蕉
44    QQQSED  波罗蜜

分行输出

01:正则表达式分行输出

#正则表达式
a="aA1一bB2二cC3三dD4四eE5五fF6六gG7七hH8八iI9九"
import re
reg=["[a-z]","[A-Z]","d","[^da-zA-Z]"]
#compile和findall一起使用,返回一个列表
for s in reg:  
  rega=re.compile(s)
  s=re.findall(rega,a)
  print("".join(s))

abcdefghi
ABCDEFGHI
123456789
一二三四五六七八九

02:string方法分行输出

#string方法
a="aA1一bB2二cC3三dD4四eE5五fF6六gG7七hH8八iI9九"
import string
ta=tb=tc=td=''
la=string.ascii_lowercase#la为小写字母
ua=string.ascii_uppercase#ua为大写字母
nb=string.digits#nb为0~9的数字
ub="一二三四五六七八九"

#分别从a中找出小写、大写字母、数字并进行分行输出
for s in a:
  if s in la:
    ta=ta+s
  if s in ua:
    tb=tb+s
  if s in nb:
    tc=tc+s
  if s in ub:
    td=td+s
print(ta)
print(tb)
print(tc)
print(td)

abcdefghi
ABCDEFGHI
123456789
一二三四五六七八九

好了,今天的分享就到这里。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python3 入门教程 简单但比较不错
Nov 29 Python
Python模拟登录12306的方法
Dec 30 Python
Python遍历目录的4种方法实例介绍
Apr 13 Python
PyMongo安装使用笔记
Apr 27 Python
Python实现获取磁盘剩余空间的2种方法
Jun 07 Python
Django添加favicon.ico图标的示例代码
Aug 07 Python
python如何求解两数的最大公约数
Sep 27 Python
实例详解Matlab 与 Python 的区别
Apr 26 Python
Linux下远程连接Jupyter+pyspark部署教程
Jun 21 Python
python根据文本生成词云图代码实例
Nov 15 Python
keras 多gpu并行运行案例
Jun 10 Python
浅谈Python响应式类库RxPy
Jun 14 Python
python类中super() 的使用解析
Dec 19 #Python
在python中计算ssim的方法(与Matlab结果一致)
Dec 19 #Python
用openCV和Python 实现图片对比,并标识出不同点的方式
Dec 19 #Python
Python命令行click参数用法解析
Dec 19 #Python
python3 常见解密加密算法实例分析【base64、MD5等】
Dec 19 #Python
Python定义函数时参数有默认值问题解决
Dec 19 #Python
Python爬取腾讯视频评论的思路详解
Dec 19 #Python
You might like
php 异常处理实现代码
2009/03/10 PHP
destoon安全设置中需要设置可写权限的目录及文件
2014/06/21 PHP
基于yaf框架和uploadify插件,做的一个导入excel文件,查看并保存数据的功能
2017/01/24 PHP
thinkPHP实现基于ajax的评论回复功能
2018/06/22 PHP
基于jquery的让页面控件不可用的实现代码
2010/04/27 Javascript
初窥JQuery(一)jquery选择符 必备知识点
2010/11/25 Javascript
jquery获取自定义属性(attr和prop)实例介绍
2013/04/21 Javascript
textarea焦点的用法实现获取焦点清空失去焦点提示效果
2014/05/19 Javascript
jQuery中:input选择器用法实例
2015/01/03 Javascript
javascript制作的滑动图片菜单
2015/05/15 Javascript
javascript实现简单的on事件绑定
2016/08/23 Javascript
jQuery之动画效果大全
2016/11/09 Javascript
详解angular2采用自定义指令(Directive)方式加载jquery插件
2017/02/09 Javascript
bootstrap datetimepicker日期插件超详细使用方法介绍
2017/02/23 Javascript
jQuery EasyUI Draggable拖动组件
2017/03/01 Javascript
浅析为什么a=&quot;abc&quot; 不等于 a=new String(&quot;abc&quot;)
2017/10/25 Javascript
浅谈jquery中ajax跨域提交的时候会有2次请求的问题
2017/11/10 jQuery
用Axios Element实现全局的请求loading的方法
2018/03/15 Javascript
Vue项目使用localStorage+Vuex保存用户登录信息
2019/05/27 Javascript
python二叉树的实现实例
2013/11/21 Python
Python实现登录接口的示例代码
2017/07/21 Python
win10下tensorflow和matplotlib安装教程
2018/09/19 Python
python中的tcp示例详解
2018/12/09 Python
pyenv与virtualenv安装实现python多版本多项目管理
2019/08/17 Python
python实现飞机大战游戏(pygame版)
2020/10/26 Python
如何实现在jupyter notebook中播放视频(不停地展示图片)
2020/04/23 Python
使用html5制作loading图的示例
2014/04/14 HTML / CSS
实习护士自荐信
2014/06/21 职场文书
2014年社区党建工作汇报材料
2014/11/02 职场文书
学籍证明模板
2014/11/21 职场文书
仓库保管员岗位职责
2015/02/09 职场文书
同学联谊会邀请函
2019/06/24 职场文书
盘点2020年适合农村地区创业的项目
2019/10/16 职场文书
话题作文之成长
2019/12/09 职场文书
MySQL系列之十二 备份与恢复
2021/07/02 MySQL
详解python的异常捕获
2022/03/03 Python