Как сравнить слова в текстовом файле со списком ключевых слов и запустить функцию на основе соответствия ключевых слов?

У меня есть текстовый файл с такими данными:

height 10.3
weight 221.0
speed 84.0 
height 4.2
height 10.1
speed 1.2

Я хочу прочитать файл, и каждый раз, когда я нахожу одно из ключевых слов height, weight, или же speed Я хочу вызвать другую функцию. Например, если я столкнусь с height Ключевое слово хочу вызвать функцию convert_hight(h),

Ключевые слова могут появляться в любом порядке по всему файлу, но они всегда появляются в начале строки.

Я должен указать, что это упрощенный пример, в действительности у меня есть сотни ключевых слов, и текстовый файл может быть довольно большим, поэтому я хочу избегать сравнения каждого слова в файле с каждым словом в списке ключевых слов.

Как я могу подойти к этой проблеме? (Я использую питон)

2 ответа

Решение

Вы можете использовать словарь функций:

def convert_hight(h):
   #do something

def convert_speed(s):
   #do something

def convert_weight(w):
   #do something

d = {"height":convert_height, "weight":convert_weight, "speed":convert_speed}

data = [i.strip('\n').split() for i in open('filename.txt')]
for type, val in data:
   d[type](float(val))

Немного другая реализация в python3

#!/usr/local/bin/python3


def htFn():
    return "Height"

def wtFn():
    return "Weight"

def readFile(fileName):
    """Read the file content and return keyWords."""
    KeyStrings = {
        'height': htFn(),
        'weight': wtFn(),
    }
    with open(fileName, "r") as configFH:
        for records in configFH.readlines():
            func = records.split()
            if func:
                print(KeyStrings.get(func[0]))


if __name__ == "__main__":
    readFile('lookup.txt')
Другие вопросы по тегам