【发布时间】:2014-07-25 17:07:31
【问题描述】:
代码:
with open(filename) as f:
file_list = f.readlines()
file_list = [line.strip() for line in file_list] # remove whitespaces from each line of file
code to process data between start and end tags (these tags can have whitespaces thats why i have removed them above)
这段代码对我来说很好用,但是如果文件太大,那么我认为将整个数据复制到列表中然后从每一行中去除空格是不明智的。
如何删除列表特定部分的空格,以便我可以在列表中保存那么多部分?
我试过了:
with open(filename) as f:
for line in f.readlines():
if line.strip() == "start":
start = f.readlines.index("start")
if line.strip() == "end"
end = f.readlines.index("end")
file_list = f.readlines[start:end]
但它给出错误
start = f.readlines.index("start")
AttributeError: 'builtin_function_or_method' object has no attribute 'index'
我只是想写一篇文章开头提到的高效代码。
【问题讨论】:
-
我可以告诉您,您的第二个
readlines()将失败,因为第一个将文件指针留在文件末尾:没有更多行可读取。但是,如果您需要帮助,您需要努力告诉人们您的问题是什么。 -
file_list = f.readlines().strip()"这段代码对我来说很好用" -- 你确定吗?我原以为这会出错,因为上次我检查你不能strip一个列表... -
@tobias_k 是的,你是对的,实际上我在帖子中犯了错误,但现在我已经更新了帖子
-
@nekomatic 我只想写一段高效的代码(在这篇文章的顶部)
-
在时间、内存或其他方面有效率吗?我看不出四次读取文件的全部内容是多么有效。无论如何,如果您担心内存使用,那么我建议您先从文件中一次读取并丢弃一行(使用
readline()),直到您到达“开始”标记,然后继续使用您的原始代码。
标签: python-2.7 file-io removing-whitespace