我正在尝试创建一个函数,根据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。然而,伪代码很好。
答案 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
此功能将符合您的描述中的规范,并附加假设您关注的字符串位于不同的行上。值得注意的事情:
Python中的文件对象充当其内容行的迭代器。如果你需要做的就是检查每一行,你不必将这些行读入列表。
enumerate
函数接受一个迭代器并返回一个生成一个像(index, element)
这样的元组的生成器,其中element
是迭代器中的元素,索引是它在其中的位置迭代器。
此函数以标准Pythonic样式编写,带有docstring,变量名称上的适当大小写以及描述性名称。