2017-12-01 11 views
0

私のサンプルファイル間の空白を無視して存在する構造を有している:Pythonのチェックライン(2つのキーワード)場合は

Library  Collections 
Library  XML use_lxml=True 
Library  ute_wtssim 
Library  libraries.ta_infomodel 
Library  ute_tshark 
Library  PDMLChecker.py 
Library libraries.ta_ue_configuration 
Library  libraries.ta_tshark 
Library libraries.ta_file_system 
Resource  environment_setup.robot 
Variables ../tshark_filters.py 
Variables ../global_variables.py 
Variables tracing_tshark_filters.py 

私は、ファイルの行で検索したいと思います:定数ではありませんLibrary libraries.ta_infomodel無視空白文字(列幅、 )。

アドバイスをいただけますか?

EDIT: 私は行が存在するかどうかチェックしたいと思います... 間に空白を無視して、正確に2つのキーワードを含む行。

+3

で行うことができます 'ライブラリ\ sの+ライブラリ\ .ta_infomodel'あなたはそれが含まれているものを知っている場合は、なぜあなたはそれを見つける必要があります –

+0

?なぜ静的で既知の文字列を見つけるために正規表現を使用するのですか? – tripleee

+0

あなたは正しいです、私の意図は、その行が存在するかどうかをチェックすることでした(白いスペースを無視する) – Misiek777

答えて

0

はこれを試してみてください。正規表現で1行を検索するには、re.findallの場合はre.searchを使用します。

\s+ - いくつかのスペース。

\. - ドットの場合。ドットは任意の文字を意味するので、スラッシュを追加するにはhaveを使用します。

+0

私は(コンテンツ)に何を入れるべきですか?開かれたファイルまたはファイル全体の1行?何が良いでしょうか? – Misiek777

+0

私は答えを編集しました。楽しい! @ Misiek777 – Fomalhaut

+0

それを確認してください: https://pastebin.com/YXgttHsS – Misiek777

1

\s*をそのまま使用してください。 \sは空白を表します。 *は(ゼロを含む)の任意の数を意味します

content = """ 
Library  Collections 
Library  XML use_lxml=True 
Library  ute_wtssim 
Library  libraries.ta_infomodel 
Library  ute_tshark 
Library  PDMLChecker.py 
Library  resources.DevWro1.pdml_validation.PdmlValidation 
Library libraries.ta_ue_configuration 
Library  libraries.ta_tshark 
Library libraries.ta_file_system 
Resource  environment_setup.robot 
Variables ../tshark_filters.py 
Variables ../global_variables.py 
Variables tracing_tshark_filters.py 
""" 

import re 
regex = re.compile(r'Library\s+libraries\.ta_infomodel') 
line = regex.search(content) 

いくつかの説明:

import re 
s = '''Library  Collections 
Library  XML use_lxml=True 
Library  ute_wtssim 
Library  libraries.ta_infomodel 
Library  ute_tshark 
Library  PDMLChecker.py 
Library  resources.DevWro1.pdml_validation.PdmlValidation 
Library libraries.ta_ue_configuration 
Library  libraries.ta_tshark 
Library libraries.ta_file_system 
Resource  environment_setup.robot 
Variables ../tshark_filters.py 
Variables ../global_variables.py 
Variables tracing_tshark_filters.py''' 

matches = re.findall('Library\s*libraries\.ta_infomodel', s) 

for match in matches: 
    print(match) 
+1

あなたの正規表現では、ドットの前にスラッシュを忘れてしまったので、例えば 'Library libraries Qta_infomodel'を選択することができます。 – Fomalhaut

+0

@Fomalhaut:そうです。私はそれを修正しました。 – mrCarnivore

-1

は、あまりにもリスト内包

import re 
lines = open(fname, 'r').readlines() 
found = [s for s in lines if re.match(".* Library\s+libraries\.ta_infomodel.*", s)] 
関連する問題