我正在编写一个函数,它将读取给定要跳过的页眉行数和要跳过的页脚行数的文件。你知道吗
def LoadText(file, HeaderLinesToSkip, FooterLinesToSkip):
fin = open(file)
text = []
for line in fin.readlines()[HeaderLinesToSkip, -FooterLinesToSkip]
text.append(line.strip())
return text
我的问题是这个函数只能在FooterLinesToSkip至少等于1的情况下正常工作。如果FooterLinesToSkip=0,则函数将返回[]。我可以用if语句解决这个问题,但是有更简单的形式吗?你知道吗
编辑:我实际上简化了我的问题;从文件中读取的行包含由半列分隔的列。实函数包括.split(分隔符\u字符),只应存储列1。你知道吗
def LoadText(file, HeaderLinesToSkip, FooterLinesToSkip):
fin = open(file)
text = []
for line in fin.readlines()[HeaderLinesToSkip, -FooterLinesToSkip]
text.append(line.strip().split(';')[1])
return text
改为将
FooterLinesToSkip
设置为None
,因此切片默认为列表长度:让我给你一个改进,它不需要你把整个列表读入记忆:
在跳过
header_skip
行并将footer_skip
行保留在缓冲区中之后,它会逐个读取行。当我们遍历文件中的所有行时,footer_skip
行仍保留在缓冲区中,并且被忽略。你知道吗这是一个生成函数,所以它将在一个循环中产生行:
我将文件打开从函数中移出,这样它也可以用于其他iterables,而不仅仅是文件。你知道吗
现在可以使用
csv
模块来处理列拆分和剥离:而且
skip_headers_and_footers()
生成器已经为您跳过了前两行,并且永远也不会生成最后两行。你知道吗相关问题 更多 >
编程相关推荐