Как поместить определенные экземпляры текстового файла в список в python

#python

#python

Вопрос:

Вот как выглядит часть текстового файла:

3 / Kingsbury Dr / Waterdale Rd / Bundoora

4 / Crissane Rd / Waterdale Rd / Heidelberg West

Я просто хочу получить второй элемент, который является экземпляром автобусной остановки (например, Kingsbury Dr, Crissane Rd) в списке. Вот что я пробовал до сих пор и не уверен, как поместить второй элемент в список

 def loadData():
    with open('BusRoute250.txt', 'r') as f:
        busStopList = []
        f_line = f.readline()
        while f_line:
            file_line_lst = list(f_line.strip().split('/'))
            f_line = f.readline()
            for f_line in file_line_lst:
                busStopList.append()
                print(busStopList)
  

Ссылка на содержимое текстового файла: https://docs.google.com/document/d/1ah1EAhro_5-pgqIDylFSjTyHI9fvylfErB8pFNZb36A/edit?usp=sharing

Ответ №1:

Попробуйте это:

 def loadData():
    with open('BusRoute250.txt', 'r') as f:
        bus_stops = []
        for line in f:
            elements = line.strip().split('/')
            if len(elements) > 0:
                bus_stops.append(elements[1])

    return bus_stops

#call function and print:
result = loadData()
print('n'.join(result))   # print as a column
  

Вам не нужно явно вызывать readline для этой цели. Здесь мы будем использовать цикл for для перебора файла по одной строке за раз, проверки того, что строка содержит поля, и построения списка из каждого второго поля.

Это подход, который не требует внешних библиотек. Но если вы планируете выполнять какую-либо работу с текстом с разделителями, я бы посоветовал начать изучать Python pandas .

Комментарии:

1. Спасибо за это! Как я могу распечатать этот список? Я пытался, и я не мог заставить его печатать, также я посмотрю на pandas 🙂

2. @Malan: смотрите дополнительные строки в моем ответе. Это превратит список в строку, каждый элемент которой будет разделен символом новой строки. При печати он будет печатать столбец. Обратите внимание, что это будет длиннее, чем у большинства мониторов. При желании вы можете приспособиться к своим потребностям с помощью других типов соединения.

Ответ №2:

Вам нужно добавить второй элемент списка, сформированного в результате split('/') операции.

 busStopList.append(file_line_lst[1])
  

while Цикл немного неправильный. Это должно быть так:

 while f_line:
    file_line_lst = list(f_line.strip().split('/'))
    busStopList.append(file_line_lst[1])
    f_line = f.readline()