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 break语句详解
Mar 11 Python
用Python解析XML的几种常见方法的介绍
Apr 09 Python
简单理解Python中基于生成器的状态机
Apr 13 Python
Python探索之pLSA实现代码
Oct 25 Python
Python创建普通菜单示例【基于win32ui模块】
May 09 Python
Python之inspect模块实现获取加载模块路径的方法
Oct 16 Python
pyqt5 删除layout中的所有widget方法
Jun 25 Python
pytorch中如何使用DataLoader对数据集进行批处理的方法
Aug 06 Python
Python远程开发环境部署与调试过程图解
Dec 09 Python
Python爬取豆瓣数据实现过程解析
Oct 27 Python
快速解决pymongo操作mongodb的时区问题
Dec 05 Python
python将图片转为矢量图的方法步骤
Mar 30 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
mysql+php分页类(已测)
2008/03/31 PHP
php和数据库结合的一个简单的web实例 代码分析 (php初学者)
2011/07/28 PHP
解决PHP里大量数据循环时内存耗尽的方法
2015/10/10 PHP
PHP的mysqli_sqlstate()函数讲解
2019/01/23 PHP
javascript 有趣而诡异的数组
2009/04/06 Javascript
IE6弹出“已终止操作”的解决办法
2010/11/27 Javascript
javascript克隆对象深度介绍
2012/11/20 Javascript
异步动态加载js与css文件的js代码
2013/09/15 Javascript
js、jquery图片动画、动态切换示例代码
2014/06/03 Javascript
学习Javascript面向对象编程之封装
2016/02/23 Javascript
jQuery多选框选择数量限制方法
2017/02/08 Javascript
js仿微博动态栏功能
2017/02/22 Javascript
详解vue.js全局组件和局部组件
2017/04/10 Javascript
javascript中神奇的 Date对象小结
2017/10/12 Javascript
JS事件绑定的常用方式实例总结
2019/03/02 Javascript
vue组件间通信六种方式(总结篇)
2019/05/15 Javascript
Vue+axios+WebApi+NPOI导出Excel文件实例方法
2019/06/05 Javascript
vue递归组件实战之简单树形控件实例代码
2019/08/27 Javascript
微信接入之获取用户头像的方法步骤
2019/09/23 Javascript
[36:33]2018DOTA2亚洲邀请赛 4.3 突围赛 EG vs Newbee 第二场
2018/04/04 DOTA
Python对两个有序列表进行合并和排序的例子
2014/06/13 Python
sublime python3 输入换行不结束的方法
2018/04/19 Python
Python3实现的简单三级菜单功能示例
2019/03/12 Python
Python中字符串与编码示例代码
2019/05/20 Python
Tensorflow中的降维函数tf.reduce_*使用总结
2020/04/20 Python
python神经网络编程实现手写数字识别
2020/05/27 Python
Python如何实现Paramiko的二次封装
2021/01/30 Python
CSS3 border-image详解、应用及jQuery插件
2011/08/29 HTML / CSS
移动web模拟客户端实现多方框输入密码效果【附代码】
2016/03/25 HTML / CSS
HTML5之SVG 2D入门4—笔画与填充
2013/01/30 HTML / CSS
俄罗斯旅游网站:Tripadvisor俄罗斯
2017/03/21 全球购物
澳大利亚著名的纺织品品牌:Canningvale
2020/05/05 全球购物
光棍节联谊晚会活动策划书
2014/10/10 职场文书
招商银行工作证明
2015/06/17 职场文书
Python采集爬取京东商品信息和评论并存入MySQL
2022/04/12 Python
python井字棋游戏实现人机对战
2022/04/28 Python