Python: поиск строки в текстовом файле и отображение соответствующих строк - PullRequest
1 голос
/ 07 марта 2019

У меня есть эта программа прямо сейчас, где она позволяет пользователям выбирать из категории (вытягивание из файла). Затем он напечатает университет или людей из этого текстового файла.

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

Мне нужна помощь в поиске заданной строки или части строки и отображении соответствующих категорий (университет и люди).

Пример:

поиск: он

выход:

Университет: UCLA Имя: J Он Келли

Университет: Мемфисский университет. Имя: Тейлор Дж. он сын

Вот мой текущий текстовый файл:

"UniversityName","ContactName"
"UCLA","John Kelly"
"UofFlorida","Mary Elizabeth"
"U of Memphis","Taylor Johnson"
"Harvard","Robert Fax"

Вот что я сделал с моим кодом:

def load_data(file_name):
    university_data=[]
    with open(file_name,'r') as rd_file:
        for line in rd_file.readlines():
            line=line.strip().split(',')
            T = line[0],line[1]
            university_data.append(T)
    return university_data

def main():
    filename='List.txt'
    university_data = load_data(filename)
    print('[1] University\n[2] Contact Name\n[3] Exit\n[4] Search')
    while True:

        choice=input('Enter choice 1/2/3? ')
        if choice=='1':
            for university in university_data:
                print(university[0])
        elif choice=='2':
            for university in university_data:
                print(university[1])
        elif choice =='3':
            print('Thank You')
            break
        elif choice =='4':
            print("Search Section Here")
        else:
            print('Invalid selection')

main()

Ответы [ 2 ]

1 голос
/ 07 марта 2019

Учитывая ваши данные:

university_data = [["UniversityName","ContactName"],
["UCLA","John Kelly"],
["UofFlorida","Mary Elizabeth"],
["U of Memphis","Taylor Johnson"],
["Harvard","Robert Fax"]]

Использование str.join:

def search(key, data):
    for l in data:
        if key in ''.join(l):
            print('University: %s Name: %s' % (l[0], l[1]))
search('ohn', university_data)
# University: UCLA Name: John Kelly
# University: U of Memphis Name: Taylor Johnson
0 голосов
/ 07 марта 2019

Аналогично предыдущему ответу @ Chris , если вы хотите игнорировать верхний или нижний регистр поискового слова, вы можете добавить lower() в функцию search.

def search(key, mydata):
    for l in mydata:
        if key in (''.join(l)).lower():
            print('University: %s Name: %s' % (l[0], l[1])) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...