簡體   English   中英

閱讀特定行並使用python忽略其他行

[英]Read Specific line and ignore others using python

我有一個這樣的文本文件:

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() 

這是我嘗試過的代碼。

我將使用以下內容:

with open("file.txt") as fp:
    for line in fp:
        if line.startswith('?'):
            print line

通過使用上下文管理器( with ... as ),在完成處理后,文件自動關閉。

列表理解使這一過程變得簡單:

filtered = [line for line in fp.readlines() if line.startswith("?")]

我想我會使用生成器表達式:

(line for line in open('file.txt') if line.startswith('?'))

一個完整的程序如下所示:

lines = (line for line in open('file.txt') if line.startswith('?'))
print ''.join(lines)

這行不通嗎?

with open("file.txt") as fin:
    for line in fin:
        if not line.startswith('>'):
            print line

另外,您是否可以不首先通過grep傳遞它?

另外,您可以使用line[0]獲取每行的第一個字符。

with open("file.txt") as fp:
    for line in fp:
        if line[0] == '?':
            print line

這是可能的,因為Python中的String可以被索引。 像C一樣,Python的String以索引0開頭。 line[0]將為您提供索引0處的字符,這是第一個字符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM