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实现比较两个文件夹中代码变化的方法
Jul 10 Python
使用Python编写简单的画图板程序的示例教程
Dec 08 Python
python3.5仿微软计算器程序
Mar 30 Python
Python黑魔法@property装饰器的使用技巧解析
Jun 16 Python
pygame 精灵的行走及二段跳的实现方法(必看篇)
Jul 10 Python
在vscode中配置python环境过程解析
Sep 28 Python
Numpy中对向量、矩阵的使用详解
Oct 29 Python
Docker部署Python爬虫项目的方法步骤
Jan 19 Python
如何理解python对象
Jun 21 Python
浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack
Jun 23 Python
python实现登录与注册系统
Nov 30 Python
python 数据类型强制转换的总结
Jan 25 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 FLEA中二叉树数组的遍历输出
2012/09/26 PHP
php IP转换整形(ip2long)的详解
2013/06/06 PHP
PHP Session机制简介及用法
2014/08/19 PHP
Yii2设置默认控制器的两种方法
2017/05/19 PHP
jQuery 1.5 源码解读 面向中高阶JSER
2011/04/05 Javascript
jquery清空textarea等输入框实现代码
2013/04/22 Javascript
网页前端优化之滚动延时加载图片示例
2013/07/13 Javascript
AngularJS实现全选反选功能
2015/12/08 Javascript
JQuery的attr 与 val区别
2016/06/12 Javascript
Javascript基础_嵌入图像的简单实现
2016/06/14 Javascript
基于bootstrap的选择框插件icheck
2016/12/23 Javascript
JQuery和HTML5 Canvas实现弹幕效果
2017/01/04 Javascript
layui选项卡效果实现代码
2017/05/19 Javascript
Vue.js实现网格列表布局转换方法
2017/08/25 Javascript
bootstrap表格内容过长时用省略号表示的解决方法
2017/11/21 Javascript
vue几个常用跨域处理方式介绍
2018/02/07 Javascript
vue-cli 目录结构详细讲解总结
2019/01/15 Javascript
vue中的v-if和v-show的区别详解
2019/09/01 Javascript
javascript二维数组和对象的深拷贝与浅拷贝实例分析
2019/10/26 Javascript
微信小程序 下拉刷新及上拉加载原理解析
2019/11/06 Javascript
JavaScript图像放大镜效果实现方法详解
2020/06/28 Javascript
javascript代码实现简易计算器
2021/01/25 Javascript
[54:19]完美世界DOTA2联赛PWL S2 Magma vs PXG 第二场 11.28
2020/12/01 DOTA
python下MySQLdb用法实例分析
2015/06/08 Python
Python基于sftp及rsa密匙实现远程拷贝文件的方法
2016/09/21 Python
selenium+python自动化测试之环境搭建
2019/01/23 Python
python并发编程多进程 模拟抢票实现过程
2019/08/20 Python
联想台湾官网:Lenovo TW
2018/05/09 全球购物
电子商务专业个人的自我评价
2013/11/19 职场文书
应聘编辑职位自荐信范文
2014/01/05 职场文书
大学生职业生涯规划书
2014/03/14 职场文书
数学教育专业求职信
2014/07/22 职场文书
谢师宴答谢词
2015/01/05 职场文书
大学生个人学年总结
2015/02/15 职场文书
python用字节处理文件实例讲解
2021/04/13 Python
原生JS实现飞机大战小游戏
2021/06/09 Javascript