Python菜鸟文本处理4种方法
自从认识了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菜鸟文本处理4种方法的更多相关文章
- Selenium2+python自动化65-js定位几种方法总结
Selenium2+python自动化65-js定位几种方法总结 前言 本篇总结了几种js常用的定位元素方法,并用js点击按钮,对input输入框输入文本 一.以下总结了5种js定位的方法 除了i ...
- Python下载网页的几种方法
get和post方式总结 get方式:以URL字串本身传递数据参数,在服务器端可以从'QUERY_STRING'这个变量中直接读取,效率较高,但缺乏安全性,也无法来处理复杂的数据(只能是字符串,比如在 ...
- Python字符串连接的5种方法
总结了一下Python字符串连接的5种方法: 加号 第一种,有编程经验的人,估计都知道很多语言里面是用加号连接两个字符串,Python里面也是如此直接用 "+" 来连接两个字符串: ...
- 用Python计算幂的两种方法,非递归和递归法
用Python计算幂的两种方法: #coding:utf-8 #计算幂的两种方法.py #1.常规方法利用函数 #不使用递归计算幂的方法 """ def power(x, ...
- Vue-Vue文本渲染三种方法 {{}}、v-html、v-text
{{ }} 将元素当成纯文本输出 v-htmlv-html会将元素当成HTML标签解析后输出 v-textv-text会将元素当成纯文本输出 代码: <!DOCTYPE html> < ...
- Python保留小数的几种方法
Python保留小数的几种方法 1.使用字符串格式化 print("%.2f"%a) 2.使用round内置函数 round(num,2) 3.使用Decimal模块 from d ...
- 转:python list排序的两种方法及实例讲解
对List进行排序,Python提供了两个方法 方法1.用List的内建函数list.sort进行排序 list.sort(func=None, key=None, reverse=False) Py ...
- 分析python程序运行时间的几种方法
最早见过手写的,类似于下面这种: 1 import datetime 2 3 def time_1(): 4 begin = datetime.datetime.now() 5 sum = 0 6 f ...
- python字符串连接的三种方法及其效率、适用场景详解
python字符串连接的方法,一般有以下三种:方法1:直接通过加号(+)操作符连接website=& 39;python& 39;+& 39;tab& 39;+& ...
随机推荐
- 使用SQL语句修改Mysql数据库字符集的方法
使用SQL语句修改Mysql数据库字符集的方法 修改库: alter database [$database] character set [$character_set] collate [$c ...
- 线上服务器CPU彪高的调试方式
原文内容来自于LZ(楼主)的印象笔记,如出现排版异常或图片丢失等问题,可查看当前链接:https://app.yinxiang.com/shard/s17/nl/19391737/2fee7b91-f ...
- LeetCode刷题总结-栈、链表、堆和队列篇
本文介绍LeetCode上有关栈.链表.堆和队列相关的算法题的考点,推荐刷题20道.具体考点分类如下图: 一.栈 1.数学问题 题号:85. 最大矩形,难度困难 题号:224. 基本计算器,难度困难 ...
- Python面向对象-多重继承之MixIN
以Animal类为例,假设要实现以下4种动物: Dog(狗).Bat(蝙蝠).Parrot(鹦鹉)和Ostrich(鸵鸟) 如果按照哺乳类和鸟类来区分的话,可以这样设计: Animal: |--Mam ...
- python——模块(Module)的概念、使用以及安装第三方模块
一.模块定义 python中,一个.py文件就是一个模块(Module). 使用模块的好处:1.提高了代码的可维护性.我们把函数进行分组,分别放在不同的模块中.2.编写代码不必要从0开始,当一个模块编 ...
- JS---封装缓动(变速)动画函数---增加任意多个属性&增加回调函数
封装缓动(变速)动画函数---增加任意多个属性&增加回调函数 回掉函数fn,在所有元素到达目的位置后,判断是否传入一个函数,有就调用 if(fn){fn()}; 这样一次点击,产生多个动画 & ...
- iOS开发 - 超级签名实现之描述文件
简介 因为最近企业签掉得太严重了,上头要求实现超级签进行游戏下载.故有了此文章,记录一下过程. 签名原理其实很简单,超级签名的技术就是使用个人开发者账号,将用户的设备当作开发设备进行应用分发.这也导致 ...
- Redis—数据备份与恢复
https://www.cnblogs.com/shizhengwen/p/9283973.html https://blog.csdn.net/w2393040183/article/details ...
- C语言基于NIOSII的软件开发及流水灯设计
一.Quartus II 12.1 (32-Bit)进行硬件设计 1.所需要的系统元器件组成 2.系统电路图 二.Nios II 12.1 Software Build Tools for Eclip ...
- Leetcode823 : 因子二叉树问题
问题描述 给定一个数组,数组中的数不重复,且均大于1.要求使用数组中的数构建二叉树,每个数字可以被重复使用,除了叶子节点,每个节点的值等于其子节点的乘积,求构建二叉树的数量,返回的结果mod 10** ...