0

readlines()を使用して読んだテキストファイルがあります。テキストファイルのキーワードの後に​​データの抽出を開始する必要があります。たとえば、以下のキーワードの後に​​、Hello World次の値から値100を取得したいと思いますBlah=100

Blah=0 
Blah=2
Hello World
All the Text
 Will be Scan
And Relevant       
  Info will be
 Retrieved Blah=100

テキストファイルから必要な情報を簡単に取得できますが、上記のように、テキストファイル内の特定のキーワードの後でのみ取得を開始する必要があります'Hello World'。私が現在行っているのは、を使用して値を取得することです.split('=')。したがって、、、およびの3つの値すべてを取得しBlah=0ます。テキストファイルのキーワードの後の値、たとえば、値を取得したいだけです。Blah=2Blah=100'Hello World'Blah=100

これを行う簡単な方法が必要です。助けてください。ありがとう。

4

4 に答える 4

2

それを行うには多くの方法があります。これが1つです:

STARTER = "Hello World"
FILENAME = "data.txt"
TARGET = "Blah="

with open(FILENAME) as f:
    value = None
    start_seen = False
    for line in f:
        if line.strip() == STARTER:
            start_seen = True
            continue

        if TARGET in line and start_seen:
            _,value = line.split('=')
            break

if value is not None:
    print "Got value %d" % int(value)
else:
    print "Nothing found"
于 2012-07-19T03:12:18.780 に答える
0

これが少し疑似コディッシュな答えです-Trueキーワードを見つけたらに変わるフラグが必要です:

thefile = open('yourfile.txt')

key = "Hello World"
key_found = False

for line in thefile:
    if key_found:
        get_value(line)
        # Optional: turn off key_found once you've found the value
        # key_found = False
    elif line.startswith(key):
        key_found = True
于 2012-07-19T03:14:52.973 に答える
0

これが1つの方法ですが、必ずしも最良とは限りません。ここでテキストをハードコーディングしましたが、file.read()を使用して同様の結果を得ることができます。

the_text = '''Blah=0 
Blah=2
Hello World
All the Text
 Will be Scan
And Relevant       
  Info will be
 Retrieved Blah=100
'''

keyword = 'Hello World'

lines = the_text.split('\n')
for line_num, line in enumerate(lines):
    if line.find(keyword) != -1:
        lines = lines[line_num:]
        break

the_value = None
value_key = 'Blah'
for line in lines:
    if line.find(value_key) != -1:
        the_value = line.split('=',2)[1]
        break

if the_value:
    print the_value
于 2012-07-19T03:22:05.713 に答える
0

正規表現を使用した例。

reg = re.compile("Hello World")
data_re = re.ompile("Blah=(?P<value>\d)")
with open(f_name) as f:
   need_search = False
   for l in f:
       if reg.search(l) is not None:
          need_search = True
       if need_search == True:
          res = data_re.search(l)
          if res is not None:
             print res.groups('value')
于 2012-07-19T03:29:23.913 に答える