gpt4 book ai didi

python - 在 Python 中从字符串中提取列表

转载 作者:行者123 更新时间:2023-11-30 22:12:13 26 4
gpt4 key购买 nike

我正在尝试使用康奈尔大学电影数据集来创建聊天机器人。以下是我要从中提取的字符串列表的格式,另存为 conv_lines:

["u0 +++$+++ u2 +++$+++ m0 +++$+++ ['L194', 'L195', 'L196', 'L197']",
"u0 +++$+++ u2 +++$+++ m0 +++$+++ ['L198', 'L199']",
"u0 +++$+++ u2 +++$+++ m0 +++$+++ ['L200', 'L201', 'L202', 'L203']"]

我试图通过提取每个字符串内的列表来从上面的字符串列表创建以下列表。

[['L194', 'L195', 'L196', 'L197'],
['L198', 'L199'],
['L200', 'L201', 'L202', 'L203']]

我找到了这段代码,但不明白它是如何工作的。请有人解释一下。

convs = [ ]
for line in conv_lines[:-1]:
_line = line.split(' +++$+++ ')[-1][1:-1].replace("'","").replace(" ","")
convs.append(_line.split(','))

我不明白为什么在 for 语句中以及拆分后的代码后面使用 [:-1]。

最佳答案

为了理解您的问题是什么,了解上下文会有所帮助。幸运的是,我确切地了解上下文,因为我和您参加了相同的 Udemy 类(class)。 ;)

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(','))

返回 super 数据科学人员提供的其余代码所需的内容:

convs
Out[ ]:
[['L194', 'L195', 'L196', 'L197']]

请记住,此示例仅适用于一行。使用 for 循环,您将使用多个 4 位数字符串列表填充 convs 列表。这有帮助吗?

关于python - 在 Python 中从字符串中提取列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51178251/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com