Чтобы понять, в чем ваш вопрос, это помогает узнать контекст. К счастью, я точно знаю контекст, потому что я прошел тот же курс, что и вы. ;)
convs = []
for line in conv_lines[:-1]:
_line = line.split(' +++$+++ ')[-1][1:-1].replace("'","").replace(" ","")
convs.append(_line.split(','))
for items in some_list[:-1]
обычно означает, что вы перебираете список до последнего элемента в этом списке и исключаете его.
Например:
l = [1,2,3,4]
for i in l[:-1]:
print(i)
Out[ ]:
1
2
3
Теперь, что это значит для кода, который вы разместили. В операторе for
вы захватываете все в строке, кроме последнего. Таким образом, последний элемент должен быть мусором бесполезным. Не верь мне на слово. Проверь это. Что print(conv_lines[-1])
показывает вам?
Теперь для другого использования [-1]. Попробуйте сначала разбить его, используя только одну строку из ваших необработанных данных.
line = "u0 +++$+++ u2 +++$+++ m0 +++$+++ ['L194', 'L195', 'L196', 'L197']"
convs = []
_line = line.split(' +++$+++ ')[-1] # notice I truncated after this.
convs.append(_line.split(','))
Что это возвращает?
convs
Out[ ]:
[["['L194'", " 'L195'", " 'L196'", " 'L197']"]]
А как теперь.
convs = []
_line = line.split(' +++$+++ ')[-1][1:-1] # truncated again, but after adding back a bit.
convs.append(_line.split(','))
А что это возвращает?
convs
Out[ ]:
[["'L194'", " 'L195'", " 'L196'", " 'L197'"]]
Продолжай.
convs = []
_line = line.split(' +++$+++ ')[-1][1:-1].replace("'","") # truncated less
convs.append(_line.split(','))
Возвращает:
convs
Out[ ]:
[['L194', ' L195', ' L196', ' L197']]
И наконец:
convs = []
_line = line.split(' +++$+++ ')[-1][1:-1].replace("'","").replace(" ","")
convs.append(_line.split(','))
Возвращает то, что вам нужно для остального кода, предоставленного ребятами из superdatascience:
convs
Out[ ]:
[['L194', 'L195', 'L196', 'L197']]
Имейте в виду, что этот пример работает только с одной строкой. С помощью цикла for
вы будете заполнять список convs
намного более чем одним списком из 4 цифр. Это помогает?