[英]Filter lines that contains exact match of a string
我正在嘗試在python中過濾包含字符串的完全匹配的文件中的行。 首先,我編寫了以下代碼部分,
lines = ["z = xxx; %eflee","x = eee ; %flee"]
for lineNo,line in enumerate(lines):
tags = ["flee"]
for tag in tags:
if tag in line:
print(line)
所需輸出:
x = eee ; %flee
獲得的輸出:
z = xxx; %eflee
x = eee ; %flee
有人可以解釋如何獲得所需的輸出嗎?
以下是將每個標簽僅作為一個整體匹配的方法:
import re
lines = ["z = xxx; %eflee","x = eee ; %flee"]
for lineNo,line in enumerate(lines):
tags = ["flee"]
for tag in tags:
if re.search(r'\b%s\b' % tag, line):
print(line)
輸出:
x = eee ; %flee
r'\\ bflee \\ b'是僅與整個單詞'flee'匹配的正則表達式。 之所以起作用,是因為“ \\ b”表示僅在單詞邊界處匹配。
如果您可能在一行中匹配兩個標簽,並且又不想重復打印同一行兩次,則應在同一縮進級別的“ print(line)”下放置“ break”。
您不使用lineNo。 如果您確實不需要,可以將“ for”行更改為:
for line in lines:
import re
lines = ["z = xxx; %eflee","x = eee ; %flee"]
tags = ["flee"]
pattern = "|".join([" %{} ?".format(t) for t in tags])
# pattern: ' %flee ?'
regex = re.compile(pattern)
for lineNo,line in enumerate(lines):
if regex.search(line):
print(line)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.