Как сравнить слова в текстовом файле со списком ключевых слов и запустить функцию на основе соответствия ключевых слов?
У меня есть текстовый файл с такими данными:
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')