Как получить имя из строк, удалив все от '[' до конца (используя split на '[ed' и выбрав первый элемент) - PullRequest
0 голосов
/ 02 мая 2020
file = open('university_towns.txt','r')
lines = file.readlines()
lst = []; state = ''; region = ''
for name in lines:
    if name == '[ed':
        state = name.split('[ed',0)

Если я запускаю приведенный выше код, то получается следующий вывод

['Alabama[edit]\n',
'Auburn (Auburn University)[1]\n',
'Florence (University of North Alabama)\n',
'Jacksonville (Jacksonville State University)[2]\n',
'Livingston (University of West Alabama)[2]\n',
'Montevallo (University of Montevallo)[2]\n',
'Troy (Troy University)[2]\n',
'Tuscaloosa (University of Alabama, Stillman College, Shelton State)[3][4]\n',
'Tuskegee (Tuskegee University)[5]\n',
'Alaska[edit]\n',
'Fairbanks (University of Alaska Fairbanks)[2]\n',
'Arizona[edit]\n',
'Flagstaff (Northern Arizona University)[6]\n',
'Tempe (Arizona State University)\n',
'Tucson (University of Arizona)\n',

Но мне нужны только элементы, заканчивающиеся на [ed

Пожалуйста, помогите

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 02 мая 2020
items = []
for name in lines:
    if '[edit]' in name:
        items.append(name.split('[')[0])
print(items)

Можете ли вы попробовать это

0 голосов
/ 02 мая 2020

Вы хотите использовать регулярное выражение. Split вернет исходную строку в виде списка из 1 элемента, если разделение не происходит. Обратите внимание, что в приведенном ниже примере я предполагаю, что вы хотите, чтобы строки заканчивались на '[edit]'.

. Также вы должны использовать менеджер контекста и избегать вызова readlines при переборе текстового файла.

import re

patt = r'\[edit\]$'

with open('university_towns.txt','r') as f:
    for line in f:
        if re.search(patt, line):
            # do something here
...