我有一個文本文件,其中要提取一行匹配特定模式的行。我可以使用正則表達式搜索該行並返回它,然後使用它?有沒有更優雅的方式比返回與正則表達式匹配的字符串
for lines in file:
if re.match(targetregex,line)!=None:
print line
喜歡的東西:
print re.matchingline(targetregex,file.read())
我有一個文本文件,其中要提取一行匹配特定模式的行。我可以使用正則表達式搜索該行並返回它,然後使用它?有沒有更優雅的方式比返回與正則表達式匹配的字符串
for lines in file:
if re.match(targetregex,line)!=None:
print line
喜歡的東西:
print re.matchingline(targetregex,file.read())
您可以使用列表理解,這樣
print [line for line in file if re.match(targetregex, line)]
這將返回匹配該行列表正則表達式。
好了,現在我明白你的意思了。 != None不需要。 – aldorado
@aldorado是的:) – thefourtheye
但現在告訴我有關條件如何工作(我也可以問這是一個單獨的問題?):re.match(targetregex,行)不返回True。爲什麼如果re.match ...輸入if條件的後果?我認爲它必須是if(condition == True):結果 – aldorado
你可以隨時編寫自己的函數來完成這項工作。
def matchingline(regex, file):
compiled = re.compile(regex)
for line in file:
if compiled.match(line):
return line
print(matchingline(targetregex, file))
我不知道是否只有第一個是想要的。所以發電機可能是更好的選擇。只是'yield'而不是'return' ... – glglgl
如果沒有匹配,您希望打印什麼? – thefourtheye
我寫錯了嗎?我看看。但是如果有匹配的話,我想返回/打印它。對不起,但我沒看到這個錯誤。幫我。 !=無意味着如果有匹配,它將被打印,對吧? – aldorado
如果你真的想與'None'比較,你應該使用'不是None'而不是'!= None'(儘管在很多情況下,包括這個,你不會有非None的falsy值無論如何,所以請跳過檢查並直接使用表達式的布爾值) – geoffspear