为了了解您的问题,了解上下文会有所帮助。幸运的是,我确切地知道上下文,因为我参加了与您相同的 Udemy 课程。;)
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 位字符串列表填充列表。这有帮助吗?