我有一个这样的文本文件:
input file
yuorvsdsd
dfdsfsd
?dsfsdfsd
sdfsdfs
?dfd
ds
我试图让它只读取以?
开头的行。 readlines
函数读取所有行,所以我给它添加了条件,但我对它不满意,因为它没有向我显示准确的结果。我希望output
成为:
?dsfsdfsd
?dfd
程序
fp = open("file.txt")
z = fp.readlines
if z=='?':
print z
fp.close()
这是我试过的代码。
答案 0 :(得分:4)
我会使用以下内容:
with open("file.txt") as fp:
for line in fp:
if line.startswith('?'):
print line
通过使用上下文管理器(with ... as
),文件的关闭将在您完成后自动完成。
答案 1 :(得分:2)
列表推导使这很简单:
filtered = [line for line in fp.readlines() if line.startswith("?")]
答案 2 :(得分:2)
我想我会选择一个生成器表达式:
(line for line in open('file.txt') if line.startswith('?'))
完整的程序如下:
lines = (line for line in open('file.txt') if line.startswith('?'))
print ''.join(lines)
答案 3 :(得分:1)
这不起作用吗?
with open("file.txt") as fin:
for line in fin:
if not line.startswith('>'):
print line
或者,您是否可以先通过grep
管道?
答案 4 :(得分:0)
或者,您可以使用line[0]
获取每行的第一个字符。
with open("file.txt") as fp:
for line in fp:
if line[0] == '?':
print line
这是可能的,因为Python中的String可以编入索引。 Python的字符串与C一样,以索引0
开头。 line[0]
将在索引0处为您提供一个字符,这是第一个字符。