读操作

总结写在前面,三个方法:

  • read() + splitlines()
  • readlines() + strip()
  • readline() + 循环

假设有test.txt文件内容为:

banana,apple,orange
cat, dog, pig
father, mother, child
man, woman, human

三种写法:
1. read()方法

with open('test.txt') as f:data = f.read()print("type: ", type(data))print("len: ", len(data))print("data: ")print(data)

输出:

type:  <class 'str'>
len:  76
data:
banana,apple,orange
cat, dog, pig
father, mother, child
man, woman, human

可以看出,read()方法把整个txt的内容读入,且作为一个字符串来处理。那如果我们想要按行分开,可以调用字符串的splitlines()方法,将字符串分为字符串list。spitines()以换行符\n,回车符\r, 回车+换行\r\n为标志,将字串分开。

with open('test.txt') as f:data = f.read().splitlines()print("type: ", type(data))print("len: ", len(data))print("data: ")print(data)

输出:

type:  <class 'list'>
len:  4
data:
['banana,apple,orange', 'cat, dog, pig', 'father, mother, child', 'man, woman, human']

ps:splitlines()将字串分开成字串列表,.join()方法可以将列表组合成字串:

print("".join(data))

输出:

banana,apple,orangecat, dog, pigfather, mother, childman, woman, human

2. readlines()方法

with open('test.txt') as f:data = f.readlines()print("type: ", type(data))print("len: ", len(data))print("data: ")print(data)

输出:

type:  <class 'list'>
len:  4
data:
['banana,apple,orange\n', 'cat, dog, pig\n', 'father, mother, child\n', 'man, woman, human\n']

可以看到,输出结果是以每行的字串为一个元素,组成了字符串列表。但是和read()+splitlines()方法的区别是,每一个元素多了一个\n回车符,也就是readlines()默认是不会去除行尾的换行符的。需要用strip()方法来手动去除。代码如下:

with open('test.txt') as f:data = f.readlines()data = [d.strip() for d in data]print("type: ", type(data))print("len: ", len(data))print("data: ")print(data)

输出如下:

type:  <class 'list'>
len:  4
data:
['banana,apple,orange', 'cat, dog, pig', 'father, mother, child', 'man, woman, human']

strip()方法如果不写参数,则用于去除字串首尾的空白字符,包括空格,回车,换行。注意只去除首尾,不去除中间
strip()如果带参数,则参数中的每一个字符,都在行首和行尾进行匹配,遇到了,就进行消除。

string = '  \r  \n abc \r\n \n 'print(string.strip())
print(len(string.strip()))

输出如下:

abc
3
string = 'aaa0bbb0ccc'print("a: ", string.strip("a"))
print("0: ", string.strip("0"))
print("b: ", string.strip("b"))
print("c: ", string.strip("c"))
print("0abc: ", string.strip("0abc"))

输出:

a:  0bbb0ccc
0:  aaa0bbb0ccc
b:  aaa0bbb0ccc
c:  aaa0bbb0
0abc:

可以看到“0abc”输出为空。
现在可以理解上文那句:**“则参数中的每一个字符,都在行首和行尾进行匹配,遇到了,就进行消除。”**了吧。

3. readline()方法
readline()跟readlines()类似,但是一次只能读一行,所以需要循环控制。

with open('test.txt') as f:while True:line = f.readline()if not line:breakprint(line)

输出:

banana,apple,orangecat, dog, pigfather, mother, childman, woman, human

可以看到,行尾也是带\n回车的,使用strip()去除。

with open('test.txt') as f:while True:line = f.readline().strip()if not line:breakprint(line)

输出:

banana,apple,orange
cat, dog, pig
father, mother, child
man, woman, human

番外1. 去除文本开头和结尾的空行
经常会要到另外一种问题,在一个txt的文本的开头和结尾处,存在一些空行,对我们是无用的,需要进行去除,这个怎么操作?

很简单,结合上面讲到的方法,read()将整个文本当作一个字符串读入,strip()可以去除行首和行尾的空白字符,splitlines()可以将字串按照换行符进行分割,那么,解决方案如下:
假设文本内容为:


banana,apple,orange
cat, dog, pig
father, mother, child
man, woman, human

其中开头一个空行,结尾两个空行,
用1的方法:

with open('test.txt') as f:data = f.read().splitlines()print("type: ", type(data))print("len: ", len(data))print("data: ")print(data)

输入如下:

type:  <class 'list'>
len:  8
data:
['', 'banana,apple,orange', 'cat, dog, pig', 'father, mother, child', 'man, woman, human', '', '', '']

可以看到len为8,首尾多了几个空行。
处理代码如下:

with open('test.txt') as f:data = f.read().strip().splitlines()print("type: ", type(data))print("len: ", len(data))print("data: ")print(data)

输出:

type:  <class 'list'>
len:  4
data:
['banana,apple,orange', 'cat, dog, pig', 'father, mother, child', 'man, woman, human']

可以看到,将原来的data = f.read().splitlines()变为了data = f.read().strip().splitlines(),多加了.strip(), txt首和尾的空行就被去除了。

去掉txt 中的空格

def de_blank(file_name):with open(file_name) as f:data = f.read().strip().splitlines()data = [d.strip() for d in data] #去掉行首行尾空格data = [d for d in data if d[0]!='#'] #去掉注释行data = [d for d in data id d.find(':')<0] # 去掉包含:符号的行data = [d.replace(' ', '') for d in data] # 去掉行中的空格return data

其实上面的多行可以合并成一行:

def de_blank(file_name):with open(file_name) as f:data = f.read().strip().splitlines()data = [d.strip() for d in data] #去掉行首行尾空格data = [d.replace(' ','') for d in data if d[0]!='#' and d.find(':')<0]return data

一个非常机智的列表表达式

a = [1, 1, 0, 2, 0, 0, 8, 3, 0, 2, 5, 0, 2, 6], 去除列表a中的元素0,如果元素0后面的元素为2的话。

a = [i[0] for i in zip(a, a[1:]+[None]) if x!=(0,2)]

实际应用

def txt2array(filename):with open(filename) as f:data = f.read().strip().splitlines()data = [d.strip() for d in data] #去掉行首行尾空格data = [d[1:-1] for d in data]data = [d.split(',') for d in data]return np.array(data, dtype=np.float64)

python文本txt处理相关推荐

  1. python文本txt词频统计_python实例:三国演义TXT文本词频分析

    0x00 前言 找不到要写什么东西了!今天有个潭州大牛讲师  说了个  文本词频分析 我基本上就照抄了一遍 中间遇到一些小小的问题 自我百度 填坑补全了  如下 : 效果演示 0x01   准备环境及 ...

  2. python在当前目录创建txt文件-python根据txt文本批量创建文件夹

    前言 前言:想写这个代码的原因是因为实习的时候需要根据表格名创建对应的文件夹,如果只是很少个数文件夹的话,ctrl+shift+n还可以接受吧,可是一次就要创建几百个文件夹,这就有点方方了.所以我写了 ...

  3. 【新星计划】 Python的txt文本操作-读、写

    Python的txt文本操作-读.写 读取txt文本 python常用的读取文件函数有三种read().readline().readlines() 以读取上述txt为例,看一下三者的区别 read( ...

  4. python读取txt中的一列称为_python读取中文txt文本的方法

    对于python2.7 字符串在Python2.7内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码成unicode,再从unico ...

  5. python 写txt 换行_写入txt文本的内容为什么没换行效果?

    PHP把内容写入文件,并每次自动换行 weixin_4089680029712018-07-20 Java文本追加.换行.输出到TXT u01422837514692015-12-15 Android ...

  6. 武汉光迅科技22校招笔试题(武汉邮科院控股国企上市大厂Python的txt文本处理笔试题)

    武汉光迅科技22校招笔试题(武汉邮科院控股国企上市大厂Python的txt文本处理笔试题) 资源: https://download.csdn.net/download/weixin_53403301 ...

  7. 利用python处理txt文本,调整格式

    利用python处理txt文本 一 二 三 一 本文内容为:利用python字符串相关方法处理文本,调整格式.没有涉及刀正则方法. 二 具体任务为:将其中人名分离,每个单独一行, 待处理文本如下: ( ...

  8. Python将txt文本批量转化为xlsx格式

    Python将txt文本批量转化为xlsx格式 # # -*- encoding: utf-8 -*- # # -------------------------------------------- ...

  9. python中文文本分析和提取_python str(使用python对txt文本进行分析和提取)

    python 文本文件数据处理 #/usr/bin/env python3 # -*- coding: utf-8 -*- def zhidao_560604345(infile, outfile): ...

最新文章

  1. 跨区域MPLS TE
  2. 由浅入深C A S,小白也能与BAT面试官对线
  3. 小波图像分解与重构程序存在的问题与解决办法
  4. MLDN出品JAVA风暴终极的java学习视频
  5. NAS与文件系统服务器比较,磁盘阵列与NAS服务器的比较
  6. 本机ip地址、本机DNS查询工具地址
  7. 网站建设费用贵和便宜有什么区别?
  8. 天然气门站监控摄像头如何布置_监控摄像头安装布线技巧
  9. react 使用 swiper
  10. python解常微分方程龙格库_求解二阶常微分方程的RungeKutta四阶方法
  11. QT写word的三种方式
  12. Python3 shutil(高级文件操作 模块)
  13. Mybatis核心配置文件
  14. 深信服2022届校招——安全服务工程师笔试
  15. GitHub7200星,一个可以白嫖全网无损音乐的神器
  16. matlab二阶节的系数,如何利用matlab求解矩阵系数的二阶微分方程
  17. 从应用模式看 计算机应用经历了,触控操作堪比鼠标 Win 10平板电脑体验
  18. 《超越平凡的平面设计: 版式设计原理与应用》—怎样用好字体
  19. 2018微策略用户峰会北京站举行 企业级BI魅力无处不
  20. 天意U盘维护系统1.8安装方法

热门文章

  1. 投资理财-朋友榕的经历
  2. 树梅派切换源_树莓派—raspbian软件源(全)
  3. 顺丰丰桥接口开发-java(工具类)
  4. 梦想扬帆,吹响一月号角
  5. 医院疫情管理系统-数据库课程设计(源码+数据库+报告全套)
  6. 计算机辅助设计的技术论文,【计算机病毒论文】谈计算机辅助设计课程微课化教学(共3741字)...
  7. 解决WPS下安装了VBA后出现的问题——卸载
  8. 有趣的新闻(1):你见过贝加尔湖冰冻气泡吗?
  9. 搞笑!from 饮水思源
  10. 心血来潮,开通了博客