簡體   English   中英

根據一個值連接兩個不同列表的字符串

[英]Concatenate two strings of different lists based on a value

我有以下變量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''a'分別代表titleabstract

我正在嘗試生產以下 output:

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

看起來很長的代碼。 我想要一個快速而干凈的代碼。

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.')]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM