如何用逗号分隔未打包的元组列表

How to separate with commas an unpacked list of tuples

将生成的元组列表解包为逗号分隔值。

我正在使用 FuzzyWuzzy 比较 2 个文件,并希望将结果输出到第三个文件中。

从这个 SO 问题出发: Python: Keepning only the outerloop max result when comparing string similarity of two lists

输出为:

[('Item_number', ('Item number', 91)), ('Item', ('Item name', 62))]

使用这种解包方法,我能够分离值:

for i in mapper:
    print(*[i[0]],*[*i[1]])

输出:

Item_number Item number 91
Item Item name 62

现在,这是我的不足之处。我正在寻找以逗号分隔的各个值,以便保存到 CSV 文件中。

我测试了许多其他解决方案,例如 itertools 但没有成功,例如:

[('I', 't', 'e', 'm', '_', 'n', 'u', 'm', 'b', 'e', 'r', 'Item number', 91), ('I', 't', 'e', 'm', 'Item name', 62)]

预期输出:

Item_number, Item number, 91
Item, Item name, 62

注意:我不是在寻找 itertool 特定的解决方案,而是一个有意义的解决方案。

感谢您的关注。

您可以使用列表理解,使用 extended iterable unpacking, and then write the list to csv (check this post 扩展第二个元组的值,了解如何从列表创建 csv 文件):

l = [('Item_number', ('Item number', 91)), ('Item', ('Item name', 62))]

[[i, *j] for i, j in l]
# [['Item_number', 'Item number', 91], ['Item', 'Item name', 62]]

尝试将其解包为各个组件,然后在它们之间用逗号打印它们:

for (i,(j,k)) in mapper:
    print(i,j,k, sep=',')

(根据实际值,给 ijk 有意义的名称可能会更好...)

根据你已有的代码,可以采用这样的解决方案:

mapper = [('Item_number', ('Item number', 91)), ('Item', ('Item name', 62))]
for i in mapper:
    print(', '.join(map(str, (*[i[0]],*[*i[1]]))))
Item_number, Item number, 91
Item, Item name, 62