Saya memiliki file teks dengan jenis data ini:

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

Saya ingin membaca file dan setiap kali saya menemukan salah satu kata kunci height, weight, atau speed saya ingin memanggil fungsi yang berbeda. Misalnya, jika saya menemukan kata kunci height, saya ingin memanggil fungsi convert_hight(h).

Kata kunci dapat muncul dalam urutan apa pun di seluruh file, tetapi selalu muncul di awal baris.

Saya harus menunjukkan bahwa ini adalah contoh yang disederhanakan, pada kenyataannya saya memiliki ratusan kata kunci dan file teks mungkin cukup besar, jadi saya ingin menghindari membandingkan setiap kata dalam file dengan setiap kata dalam daftar kata kunci.

Bagaimana saya bisa mendekati masalah ini? (Saya menggunakan python)

1
Kuisf Rund 7 September 2017, 17:07

2 jawaban

Jawaban Terbaik

Anda dapat menggunakan kamus fungsi:

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))
2
Ajax1234 7 September 2017, 14:18

Implementasi yang sedikit berbeda di 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')
0
Varad 7 September 2017, 14:29