如何忽略文件中的行?
示例:
如果您知道文件中的第一行以a或b开头,其余行以c结尾,那么如何解析该文件,以便忽略以a或b开头的行,并将以c结尾的行转换为嵌套列表?
到目前为止我所拥有的:
fname = raw_input('Enter file name: ')
z = open(fname, 'r')
#I tried this but it converts all lines to a nested list
z_list = [i.strip().split() for i in z]
我想我需要一个for循环。
for line in z:
if line[0] == 'a':
pass
if line[0] == 'b':
pass
if line[-1] == 'c':
list_1 = [line.strip().split()]
以上是一般的想法,但我是专家,使死代码!如何使它不死?
谢谢, 类海生物。
您可以添加
if
条件来列出理解。或者
一种非常通用的方法是通过删除一些行来“过滤”文件:
您可以随时使用
itertools.ifilter
来“有选择地筛选”一个iterable,得到另一个iterable,它只包含满足某些谓词的项——这就是为什么我说这种方法非常通用的原因。itertools有很多很棒的、快速的工具,可以以各种方式处理iterables,非常值得研究。一种类似但在语法上更简单的方法,在您的情况下就足够了(因此,我建议您使用简单的优点),就是使用listcomp中的
if
子句进行“过滤”:startswith可以使用字符串元组进行匹配,因此可以执行以下操作:
即使a和b是单词或句子而不仅仅是字符,这也会起作用。 如果在某些情况下,行不以a或b开头,但也不以c结尾,则可以将列表理解扩展到:
相关问题 更多 >
编程相关推荐