这一章节我们来讨论一下文件上使用列表解析与列表解析扩展
1.文件上使用列表解析
在处理文件里面文本的时候,我们一般都会遇到比较麻烦的场景,如:去除所有换行符,我们一般都会想到下面的办法
>>> hanlder=open('output_file.txt')
>>> aList=[]
>>> for line in hanlder:
aList.append (line.rstrip())
>>> aList
['aaaaa', 'bbbbb', 'ccccc', 'ddddd', 'fffff']
>>>
但是我们可以通过列表解析,简洁的处理上面的问题
>>> hanlder=open('output_file.txt')
>>> bList=[line.rstrip () for line in hanlder]
>>> bList
['aaaaa', 'bbbbb', 'ccccc', 'ddddd', 'fffff']
>>> hanlder.close ()
>>>
在上面的方法里面其实我们也可以使用分片方法line[:-1],但是需要确定每一行文本的正确性
其实,第二种方法里面,python替我们做了很多隐含的工作,而且由于它是使用c语言操作,因此,它的运行速度比相同功能的python语句更快,更高效率
我们下面再举一些例子:
把字符串变成大写
>>> hanlder=open('output_file.txt')
>>> bList=[line.rstrip ().upper() for line in hanlder]
>>> bList
['AAAAA', 'BBBBB', 'CCCCC', 'DDDDD', 'FFFFF']
>>> hanlder.close ()
替换某些字符
>>> hanlder=open('output_file.txt')
>>> bList=[line.rstrip ().replace('a','T').upper() for line in hanlder]
>>> bList
['TTTTT', 'BBBBB', 'CCCCC', 'DDDDD', 'FFFFF']
>>> hanlder.close ()
>>>
2.扩展
1)我们沿用上面的txt文件,但是我们只需要输出带有a开头的句子
这里我们就需要在列表解析里面加上if的使用
>>> hanlder=open('output_file.txt')
>>> bList=[line.rstrip () for line in hanlder if line[0]=='a']
>>> bList
['aaaaa', 'accccc', 'afffff']
>>> hanlder.close ()
>>>
2)使用多个列表解析
>>> [x+y for x in 'abc' for y in 'efg' ]
['ae', 'af', 'ag', 'be', 'bf', 'bg', 'ce', 'cf', 'cg']
>>>
>>> [x+y for x in [1,2,3] for y in [3,4,5] ]
[4, 5, 6, 5, 6, 7, 6, 7, 8]
>>>
上面我们同时解析两个序列,然后进行运算
我们还可以扩展到多个序列上面
>>> [x+y+z for x in [1,2,3] for y in [3,4,5] for z in [6,7,8]]
[10, 11, 12, 11, 12, 13, 12, 13, 14, 11, 12, 13, 12, 13, 14, 13, 14, 15, 12, 13, 14, 13, 14, 15, 14, 15, 16]
>>>
>>> for x in [1,2,3]:
for y in [3,4,5]:
for z in [6,7,8]:
print(x+y+z,end=',')
10,11,12,11,12,13,12,13,14,11,12,13,12,13,14,13,14,15,12,13,14,13,14,15,14,15,16,
>>>
其实上面的代码实现了多重循环的嵌套,然后形成新的列表
总结:这一章节我们讨论了文件上面使用列表解析,以及列表解析的扩展
这一章节就说到这里,谢谢大家
------------------------------------------------------------------
点击跳转零基础学python-目录
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
### Python入门教程知识点详解 #### 第一章 开胃菜 - **章节概述**:作为教程的开头,这一章主要是为了...通过以上章节的详细解析,读者可以全面了解Python的基础知识和进阶技巧,为进一步学习Python打下坚实的基础。
1.1 编程与使用计算机的区别 3 1.1.1 编程的一致性 3 1.1.2 编程的可控性 4 1.1.3 程序要应对变化 4 1.1.4 小结 4 1.2 准备工作 4 1.2.1 在非Windows系统上安装 Python 3.1 5 1.2.2 使用Python Shell 5 1.3 开始使用...
本书是经典的Python指导书,在第一版的基础上进行了全面升级。全书分为两个部分:第1部分占据了大约三分之二的篇幅,阐释这门语言的“核心”内容,包括基本的概念和语句、语法和风格、 Python对象、数字类型、序列...
13.9 修复Python 2.4的email.FeedParser 解析的消息 477 13.10 交互式地检查POP3邮箱 479 13.11 探测不活动的计算机 482 13.12 用HTTP监视网络 487 13.13 网络端口的转发和重定向 489 13.14 通过代理建立SSL...
第3章 python基础 3.1 语句和语法 3.1.1 注释(#) 3.1.2 继续(\) 3.1.3 多个语句构成代码组(:) 3.1.4 代码组由不同的缩进分隔 3.1.5 同一行书写多个语句(;) 3.1.6 ...
第3章 python基础 3.1 语句和语法 3.1.1 注释(#) 3.1.2 继续(\) 3.1.3 多个语句构成代码组(:) 3.1.4 代码组由不同的缩进分隔 3.1.5 同一行书写多个语句(;) 3.1.6 ...
13.4 显示列表 13.5 雾 13.6 粒子系统 13.7 蒙版 13.8 变形 13.9 小结 第14章 游戏引擎实现 14.1 游戏引擎介绍 14.1.1 什么是引擎 14.1.2 引擎的进化 14.1.3 常见的游戏引擎 14.1.4 Android游戏引擎 14.2 游戏引擎...
对于重复字段,可以使用列表操作方法,如 `append()` 或 `extend()`。 #### 13.4.5 序列化 Python 版本的 Protobuf 支持多种序列化选项,包括将消息序列化为字符串或字节对象。 #### 13.4.6 展开 Python 版本的 ...
- **文件系统层次结构**: HDFS支持层次化的文件系统结构,用户可以像使用传统文件系统那样来管理文件和目录。 **3.5 Java接口** - **API**: 提供了丰富的Java API,允许开发者使用Java编程语言来开发Hadoop应用...
\ 第8章 文件处理 蔡志明介绍了Qt的文件处理,包括基于流的文本文件和二进制文件处理,文件信息和目录操作,目录以及文件的变化监控,文件引擎的编写。 219 \ 第9章 网络 李立夏介绍了Qt的网络处理,包括编写常见的...
另外,还有一些开源的在其他语言上的Qt绑定,如C#/Mono的绑定Qyoto,Python的绑定PyQt,Ruby的绑定QtRuby等。有了这些产品,编写Qt程序不再是C++程序员的专利了。 \Qt的发行版本有商业版和开源版。开源版遵循QPL(Q...
**8.2 查询某一类文件(往往带有同一扩展名)** 使用filetype:指定文件类型,如"filetype:pdf 计算机科学论文"。 **8.3 搜索的关键字包含在URL链接中** 使用inurl:,如"inurl:blog Python教程",找到包含"Python...
16.3 扩展到上千台设备 16.4 小对象的松散结合 第17章 额外的间接层 17.1. 从直接代码操作到通过函数指针操作 17.2. 从函数参数到参数指针 17.3. 从文件系统到文件系统层 17.4. 从代码到DSL(Domain-Specific ...