如何在用户输入的文本文件中搜索而不是使用python打印?

2024-03-29 01:54:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我在尝试使用python读取文本文件中的多行时遇到了问题。我的问题是,获取特定于用户的输入并找到那段文本,然后用多行文字将其打印出来。我试图通过使用elif来继续这一部分,将其保存在while函数中。这个代码是采取一个用户的美国州,是输入和打印该州的国会大厦和州鸟后面的状态。这是通过读取包含所有50个州信息的文本文件来完成的。这是我目前正在使用的代码。这是我正在做的菜单的一小部分。你知道吗

 elif x == "2":
    f = open("States and Capitals.txt", "r")
    x = input("Enter the state you would like to search: ") 
    searchlines = f.read()
    for x, line in enumerate(searchlines):
        if x in line:
            for l in searchlines[i:i+3]: print l,
        print(x)
    f.close()

文本文件示例:

阿拉巴马州

首都:蒙哥马利

国鸟:黄锤

国花:山茶花

阿拉斯加

首都:朱诺

国鸟:柳树

国花:别忘了我

亚利桑那州

首都:凤凰城

国鸟:仙人掌鹪鹩

国花:仙人掌花


Tags: 代码用户in文本forline文字print
3条回答

试试这个。首先可以使用split()函数将文件输入拆分为一个列表,在本例中,该函数使用"\n"newline作为分隔符。然后您只需打印索引或找到的字符串(如果存在)的下3行。这里我假设你想打印州,首都,鸟和花(共4行)。你知道吗

elif x == "2":
    f = open("States and Capitals.txt", "r")
    x = input("Enter the state you would like to search: ") 
    searchlines = f.read().split("\n")
    if x in searchlines:
        index = searchlines.index(x)
        for i in range(4):
            print(searchlines[index+i])
    f.close()

如果您想从输出中排除状态,因为它可能是冗余的,那么您可以进行以下小改动:

elif x == "2":
    f = open("States and Capitals.txt", "r")
    x = input("Enter the state you would like to search: ") 
    searchlines = f.read().split("\n")
    if x in searchlines:
        index = searchlines.index(x)
        for i in range(1,4):
            print(searchlines[index+i])
    f.close()

我想这样可能行得通。这样做的结果是,您将获得包含所需行的变量输出。你可以把它打印出来。你知道吗

elif x == "2":
    state= input("\nPlease enter a State.\n")
    with open("States and Capitals.txt", "r") as f:
        for line in f:
            if state.lower() in line.lower(): output=line

你可以使用这个代码

f = open("States and Capitals.txt", "r")
x = input("enter value to search : ") 
searchlines = f.read()
if(searchlines.find(x)):
    print(x)
f.close()

相关问题 更多 >