Как печатать только строки из файла, содержащего определенную строку?

#python #list #file

#python #Список #файл

Вопрос:

Здесь у меня есть некоторый код, который берет данные из файла и запрашивает пользователя, для какого местоположения они хотят видеть данные.

 def main():
    #ask user for a city or county and store that as a variable
    location = input("Please enter a location. Make sure to add County if the location is a county ")
    location = location.capitalize()

    print("=== Data for",location," ===")
    print("Date  Total Cases  Hospitalizations  Deaths")

    #open the file
    covidFile = open("Covid Data.txt", "r")

    #read the first line to move it aside from the rest of the data
    firstLine = covidFile.readline()

    #read the rest of the data in the file using a for loop
    for dataLine in covidFile:

        #strip the data line
        dataLine = dataLine.rstrip("n")

        #split the line into a dataList
        dataList = dataLine.split(",")

        #if location matches dataList[2]
        if location in dataList:
            date = str(dataList[0])
            cases = int(dataList[4])
            hospitalizations = int(dataList[5])
            deaths = int(dataList[6])
            print(date,"  ",cases,"  ",hospitalizations,"  ",deaths)

        #if location does not match dataList[2]
        else:
            print("No data was found for that city or county.")

    #close file
    covidFile.close()
 

Однако существует проблема, когда код выводит длинные строки типа «Данные для этого города или округа не найдены», за которыми следует строка кода из файла. Я пытаюсь выяснить, как я исправляю код, чтобы он выводил данные только для местоположения, которое вводит пользователь (если местоположение находится в файле, конечно).

Ответ №1:

Я плохо говорю по-английски, поэтому могу неправильно понять ваш вопрос

 lines = file.open(*.txt)
lines = lines.readlines()
list = []
for x in lines:
    if str in x:
        list.append(x)
 

Ответ №2:

Вы пробовали полностью удалить оператор else? Я имею в виду, что вам нужно распечатывать только всякий раз, когда местоположение найдено.

Если вам все еще нужно что-то распечатать, когда ничего не найдено, вы можете создать логическое значение, допустим data_found = False , и пометить его как True, если вы когда-либо введете оператор if . Затем в самом конце скрипта после закрытия файла вы проверяете, not data_found и там вы печатаете «Данные не найдены для этого города или округа».

Ответ №3:

Просто используйте переменную для сохранения, если данные найдены:

 found = False
for dataline in Covidfile:
    if condition:
        .
        .
        .
        found = True
if not found:
    print("No data was found for that city or county.")