从用户输入的字母开头的列表中读取行?

时间:2016-12-16 08:28:43

标签: python

要注意:有些同学告诉我,我必须使用userInput根据userInput创建另一个列表。 (例如:输入“g”,创建包含以“g”开头的国家/地区的列表。)

这是我目前的代码。

countries = []
population = []
str = []
path = "E:\\SCRIPTING\\Countries.txt"
obj = open(path, "r")
allList = obj.readlines()
obj.close()
userI = input("Please input a single letter: ")
if userI.isalpha():
    if len(userI) > 1:
        print("Please enter only a single letter.")
    else:
        print("continue")
elif userI.isdigit():
    int(userI)
    print("Please enter a single letter, not a number.")
else:
    print("Please make sure that you enter a single letter.")

到目前为止,我知道它正在读取我的.txt文件,并在给出错误输入时显示不同的错误/消息。 (程序将被置于else:print(“继续”),因为它的检查点。

该程序只接受1个字母,并打印以该字母开头的所有行。

2 个答案:

答案 0 :(得分:1)

您可以在:

之前返回一个带有简单测试的列表
print("continue")

您可以添加这些行

listToBeDisplayed = [line for line in allList if line.startswith(userI)]
for line in listToBeDisplayed :
    print line

答案 1 :(得分:0)

您实际上并未应用主逻辑,您已完成输入处理,文件正确打开。

你需要:

else:
    # Bad variable name, see python.org/dev/peps/pep-0008/#id36
    for line in allList
        if line.startswith(userI):
            print line

elif userI.isdigit():

更新:

在查看更新的代码后,我建议再进行一项更改:

# raw_input() instead of input()
userI = raw_input("Please input a single letter: ")

除此之外,我已经测试了您的代码,并且只要path指向的文件中有文本数据,它就可以运行。另外注意,startswith区分大小写,因此请确保将正确的字母表作为文件中的文本。