基于一个值连接两个不同列表的字符串

2024-04-29 04:03:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下变量z

z =   [
        ['8575748' , 't', 'TextA.\n'],
        ['8575748' , 'a', 'TextB.\n'],
        ['10556298', 't', 'TextC.\n'],
        ['10556298', 'a', 'TextD.\n'],

       ]

'TextA\n''TextB\n''TextC\n''TextD\n'都是从.txt文件解析的文本样本't'和{}分别代表{}和{}

我正在尝试生成以下输出:

[('8575748', 'TextA.' + ' ' + 'TextB.'), ('10556298', 'TextC.' + ' ' + 'TextD.')]

titleabstract要与空间' '连接。请注意,在每个文本的末尾都有\n,在连接过程中需要删除这些文本

我尝试了以下方法:

(list(zip(z[0], z[1]))[0][0] , \
 list(zip(z[0], z[1]))[2][0].strip('\n') + list(zip(z[0], z[1]))[2][1].strip('\n'))

看起来很长的代码。我想有一个快速和干净的代码


1条回答
网友
1楼 · 发布于 2024-04-29 04:03:53
z = [
    ["8575748", "t", "TextA.\n"],
    ["8575748", "a", "TextB.\n"],
    ["10556298", "t", "TextC.\n"],
    ["10556298", "a", "TextD.\n"],
]

out = {}
for id_, _, txt in z:
    out.setdefault(id_, []).append(txt.strip())

out = [(k, " ".join(v)) for k, v in out.items()]
print(out)

印刷品:

[('8575748', 'TextA. TextB.'), ('10556298', 'TextC. TextD.')]

相关问题 更多 >