gpt4 book ai didi

python - 将列表中的嵌入列表写入文件中的行

转载 作者:行者123 更新时间:2023-11-28 21:35:02 25 4
gpt4 key购买 nike

我有一个包含子列表的列表,每次都由一个字符串、另一个字符串和一个由如下字符串组成的列表组成:

big_list = [['sentence', 'translation', ['error1', 'error2','error3']], ['sentence','translation',['error1','error2']],['sentence','translation',['error1', 'error2','error3','error4']]]

并且我想在单独的行上打印每个嵌入列表,列表中的元素用制表符分隔,嵌入列表中的元素用逗号分隔像这样:

sentence   translation   error1, error2, error3
sentence translation error1, error2
sentence translation error1, error2, error3, error4

如果子列表中的所有元素都是字符串,则以下代码可以正常工作。

with open (outputfile, "w", encoding="utf-8") as f:
f.writelines('\t'.join(i) + '\n' for i in big_list)

但是由于子列表中的第三个元素是列表,它变得更加复杂,我不知道解决这个问题的最佳方法是什么?

我能想到的就是首先将子列表中的嵌入列表转换为字符串,还使用 ​​"".join(j) + ","for j in subsublist,

所以我尝试了以下方法:

string_errors = ("".join(j) + "," for j in dict["trg_errors"])

但它说该类型是生成器对象而不是字符串。所以我仍然无法使用我的 writelines 函数。我怎样才能把它变成一个字符串?有没有更有效的方法来解决这个问题?

最佳答案

您可以在尝试写出之前转换为合理的数据结构。像这样的数据集的正常结构是字符串元组,所以让我们考虑一下如何获得它:

# pseudo-code:
[(sentence, translation, comma-separated_errors) for ? in big_list]

这将为我们提供我们正在寻找的结构,但是我们如何从我们将开始的错误列表中找到comma-separated_errors,以及是什么>? 我们正在迭代?让我们一次看一下这些。

你的错误列表是一个字符串列表,字符串的迭代器有方便的 str.join 方法将它们粘合在一起,所以 ", ".join(error_list) 会让我们知道。

big_list 是一个列表列表,其中每个内部列表是[sentence, Translation, error_list]。通过列表解包很容易取出。

把它们放在一起,我们有:

lines = [(sentence, translation, ', '.join(error_list)) for sentence, translation, error_list in big_list]

一旦我们有了正确的数据结构,就如同在 writelines 中调用 '\t'.join(line) for line inlines 一样简单。

with open("outputfile.tsv", 'w') as f:
f.writelines("\t".join(line) for line in lines)

关于python - 将列表中的嵌入列表写入文件中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52769245/

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