将用户输入映射到文本文件列表

时间:2016-07-19 23:06:43

标签: python function pseudocode

我正在尝试创建一个函数,根据User的输入,可以将输入映射到文本文件中的字符串列表,并返回与文件中的字符串对应的一些整数。本质上,我检查文件中的用户输入是否是什么,并返回文件中匹配字符串的索引。我有一个工作功能,但它似乎很慢且容易出错。

def parseInput(input):
    Gates = []
    try: 
        textfile = open("words.txt")
        while nextLine:
             nextLine = textfile.readline()
             Gates[n] = nextLine #increment n somewhere
    finally:
        textfile.close()
    while n <= len(Gates):
        nextString = Gates[n]
        if input in nextString:
            #Exit loop
    with open("wordsToInts.txt") as textfile:
        #Same procedure as the try loop(why isn't that one a with loop?)
        if(correct):
            return number

这似乎相当......糟糕。我似乎无法想到更好的方法来做到这一点。我完全可以控制words.txt和wordsToInts.txt(我应该把它们结合起来吗?),所以我可以随意格式化它们。我正在寻找建议:功能本身,但如果对文本文件的更改会有所帮助,我想知道。我的目标是减少错误原因,但我稍后会添加错误检查。请建议一个更好的方法来编写这个功能。如果用代码编写,请使用Python。然而,伪代码很好。

2 个答案:

答案 0 :(得分:0)

我会说要合并文件。您可以按照以下方式获得您的单词及其相应的值:

<强> words.txt

string1|something here
string2|something here

然后,您可以将每一行存储为字典的条目,并根据您的输入调用该值:

def parse_input(input):
    word_dict = {}
    with open('words.txt') as f:
        for line in f.readlines():
            line_key, line_value = line.split('|', 1)
            word_dict[line_key] = line_value.rstrip('\n')
    try:
        return word_dict[input]
    except KeyError:
        return None

答案 1 :(得分:0)

  

我正在尝试创建一个函数,根据User的输入,可以将输入映射到文本文件中的字符串列表,并返回与文件中的字符串对应的一些整数。基本上,我检查文件中的用户输入是否是什么,并返回文件中匹配字符串的索引

def get_line_number(input):
    """Finds the number of the first line in which `input` occurs.

    If input isn't found, returns -1.
    """
    with open('words.txt') as f:
        for i, line in enumerate(f):
            if input in line:
                return i
    return -1

此功能将符合您的描述中的规范,并附加假设您关注的字符串位于不同的行上。值得注意的事情:

  1. Python中的文件对象充当其内容行的迭代器。如果你需要做的就是检查每一行,你不必将这些行读入列表。

  2. enumerate函数接受一个迭代器并返回一个生成一个像(index, element)这样的元组的生成器,其中element是迭代器中的元素,索引是它在其中的位置迭代器。

    • 术语迭代器是指您可以在for循环中访问的一系列对象。
    • 术语生成器是指生成元素以“在运行中”迭代的对象。在这种情况下,这意味着您可以逐个访问文件的每一行,而无需将整个文件加载到计算机的内存中。
  3. 此函数以标准Pythonic样式编写,带有docstring,变量名称上的适当大小写以及描述性名称。