我理解python的基础知识,现在我正在寻找更加诡异的代码。
所以,如果我有一个文本文件,请说:
This is the start
Text1
Text2
Text3
This is the end
我想要一个将通过该文件的脚本,并且仅提取:
Text1
Text2
Text3
所以我有这样做的方式:
import sys
string = " "
found = False
with open(sys.argv[1]) as input_file:
for line in input_file:
if "Text" in line:
found = True
if found:
string += line
if "Text3" in line:
break
print "\n".join(string.split()) ## I do this to get rid of the line that's just a new line
我想知道我是否能以某种方式与itertools进行更多的python相同的活动?
我正在尝试以下方面:
with open(sys.argv[1]) as input_file:
for line in iter(input_file.readline,'This is the end\n'):
print line.strip()
但这只是打印空白。我想知道是否有更简单/更简洁的方式,比我的方法更少,在两行文本之间打印?
由于
答案 0 :(得分:1)
found
是多余的。
累积连接时使用列表而不是字符串。
由于只添加包含文本的行,因此无需过滤掉空行,但删除行结尾非常有用。
如果行必须以Text
开头,而不是只显示在其中的任何位置,请使用if line.startswith("Text"):
代替if "Text" in line:
。
考虑:
import sys
L = []
with open(sys.argv[1]) as input_file:
for line in input_file:
if "Text" in line:
L.append(line.strip())
if "Text3" in line:
break
print "\n".join(L)