2017-08-17 14 views
0

私はPythonを使用して特定の文字列の大きなテキストファイルを検索しています。その文字列の下には、データ解析を行うためのデータがあります。 info =の後に来るものは何でもspecial_string変数では、テキストファイルでPythonの文字列を検索する

def my_function(filename, variable2, variable3, variable4): 
array1 = [] 

with open(filename) as a: 
    special_string = str('info  %d  info =*' %variable3) 
    for line in a: 
     if special_string == array1: 
      array1 = [next(a) for i in range(9)] 
      line = next(a)  
      break 
     elif special_string != c: 
      c = line.strip() 

異なりますので、私は上で見たようにワイルドカード演算子を入れしようとしています。

special_string = str('info   %d  info = more_stuff' %variable3) 

どのように私はワイルドカード演算子を割り当てることができます。私は次のように等号の後にすべてのものを含め、検索する正確な文字列に置けば私も実行する機能を得ることができる唯一の方法です私の機能をより堅牢にするために文字列の残り?

+0

正規表現を使用してください。 '*'はPythonの文字列演算では機能しません。 – dawg

答えて

1

あなたの特別な文字列は常に、あなたが使用することができ、ラインの開始時に発生した場合下のチェック(special_stringが終わり*を持っていません):

line.startswith(special_string) 

それ以外の場合は、正規表現の使用についてはmodule re in the standard libraryをご覧ください。

+0

これは、常にこの行の先頭にあるので、この状況のた​​めに最善の方法で作業しています。私はそれを理解する必要がありますが、より堅牢にする。 –

+0

文字列や正規表現で多くの作業をしている場合は...そのモジュールについてたくさんの良いことを聞いたことがあります。そのページには多くの良い例があります。 – motjuste

1

このようなものを使用することを考えましたか? あなたの入力に基づいて、私は次のことを仮定している:

variable3 = 100000 
special_string = str('info   %d  info = more_stuff' %variable3) 

import re 
pattern = re.compile('(info\s*\d+\s*info\s=)(.*)') 
output = pattern.findall(special_string) 
print(output[0][1]) 

返すことになる:

more_stuff 
関連する問題