繰り返し文字列 (トランザクション ID) のリストをコンパイルします。私は困惑しています。正しい方法を調査したところ、このコードが機能するはずだと感じています。ただし、2番目のブロックで何か間違ったことをしています。この最初のブロックは、必要な文字列のリストを正しくコンパイルします。
この 2 番目のブロックを機能させることができません。単純化すると、次を使用してリスト内の各値を出力できます
for idx, val in enumerate(tidarray): print val
その値を使用して各行でその文字列を検索し、その行を出力できるようになったようです (実際には、別の検索用語と組み合わせて使用して行の読み取り数を減らしますが、これは私のさらに磨きをかける前の基本的なテスト。
def main():
pass
samlfile= "2013-08-18 06:24:27,410 tid:5af193fdc DEBUG org.sourceid.saml20.domain.AttributeMapping] Source attributes:{SAML_AUTHN_CTX=urn:oasis:names:tc:SAML:2.0:ac:classes"
tidarray = []
for line in samlfile:
if "tid:" in line:
str=line
tid = re.search(r'(tid:.*?)(?= )', str)
if tid.group() not in tidarray:
tidarray.append(tid.group())
for line in samlfile:
for idx, val in enumerate(tidarray):
if val in line:
print line
誰かが 2 番目のコード ブロックの修正を提案できますか? ファイルを 2 回読み取ることは、最も洗練された解決策ではないことは認識しています...ここでの主な目標は、リストを列挙し、後続のコードで各値を使用する方法を学ぶことです。