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 相关文章推荐
python中MySQLdb模块用法实例
Nov 10 Python
Python脚本实现代码行数统计代码分享
Mar 10 Python
Python格式化css文件的方法
Mar 10 Python
python自定义类并使用的方法
May 07 Python
Python对列表去重的多种方法(四种方法)
Dec 05 Python
Python 按字典dict的键排序,并取出相应的键值放于list中的实例
Feb 12 Python
Python对HTML转义字符进行反转义的实现方法
Apr 28 Python
Django中间件拦截未登录url实例详解
Sep 03 Python
python序列类型种类详解
Feb 26 Python
无需压缩软件,用python帮你操作压缩包
Aug 17 Python
python 决策树算法的实现
Oct 09 Python
python 爬取小说并下载的示例
Dec 07 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+xml实现在线英文词典之添加词条的方法
2015/01/23 PHP
深入理解PHP中的Streams工具
2015/07/03 PHP
thinkPHP商城公告功能开发问题分析
2016/12/01 PHP
php实现微信模板消息推送
2018/03/30 PHP
Yii框架应用组件用法实例分析
2020/05/15 PHP
Javascript的IE和Firefox兼容性汇编
2006/07/01 Javascript
在线编辑器中换行与内容自动提取
2009/04/24 Javascript
jQuery 1.5 源码解读 面向中高阶JSER
2011/04/05 Javascript
JS仿flash上传头像效果实现代码
2011/07/18 Javascript
node.js中的console.dir方法使用说明
2014/12/10 Javascript
javascript弹性运动效果简单实现方法
2016/01/08 Javascript
JavaScript实现的CRC32函数示例
2016/11/23 Javascript
jQuery实现的简单悬浮层功能完整实例
2017/01/23 Javascript
简单易懂的天气插件(代码分享)
2017/02/04 Javascript
微信小程序商品到详情的实现
2017/06/27 Javascript
jQuery常用选择器详解
2017/07/17 jQuery
jQuery获取table表中的td标签(实例讲解)
2017/07/28 jQuery
详解react-router4 异步加载路由两种方法
2017/09/12 Javascript
react写一个select组件的实现代码
2019/04/03 Javascript
浅谈React Native 传参的几种方式(小结)
2019/05/21 Javascript
layer弹出层扩展主题的方法
2019/09/11 Javascript
用Python制作在地图上模拟瘟疫扩散的Gif图
2015/03/31 Python
举例讲解Python面向对象编程中类的继承
2016/06/17 Python
10行Python代码计算汽车数量的实现方法
2019/10/23 Python
jupyter notebook tensorflow打印device信息实例
2020/04/20 Python
用HTML5.0制作网页的教程
2010/05/30 HTML / CSS
英国灯具和灯泡网上商店:Lights.co.uk
2018/02/02 全球购物
同步和异步有何异同,在什么情况下分别使用他们?举例说明
2014/02/27 面试题
公司离职证明范本(5篇)
2014/09/17 职场文书
2015年技术工作总结范文
2015/04/20 职场文书
三八节祝酒词
2015/08/11 职场文书
离婚财产分割协议书
2015/08/11 职场文书
浅谈:电影《孔子》观后感(范文)
2019/10/14 职场文书
TypeScript 使用 Tuple Union 声明函数重载
2022/04/07 Javascript
Alexa停服!网站排名将何去何从?目前还没有替代品。
2022/04/15 杂记
win10识别不了U盘怎么办 win10系统读取U盘失败的解决办法
2022/08/05 数码科技