Как разделить запятыми распакованный список кортежей - PullRequest
2 голосов
/ 13 июня 2019

Распаковка полученного списка кортежей в значения, разделенные запятыми.

Используя FuzzyWuzzy, я сравниваю 2 файла и хочу вывести результаты в 3-й файл.

Построение из этого SO вопроса: Python: сохранение только максимального результата externalloop при сравнении сходства строк двух списков

Вывод:

[('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решение, а скорее решение, которое имеет смысл.

Спасибо за проявленный интерес.

Ответы [ 3 ]

1 голос
/ 13 июня 2019

попробуйте распаковать его для отдельных компонентов, а затем распечатать их через запятую между:

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

(вероятно, было бы лучше дать i, j и k значащие имена, исходя из того, какие значения на самом деле являются ...)

1 голос
/ 13 июня 2019

Вы можете использовать понимание списка, расширяя значения из вторых кортежей с помощью расширенной повторяемой распаковки , а затем записать список в csv (проверьте этот пост о том, как создать 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]]
0 голосов
/ 13 июня 2019

Исходя из вашего существующего кода, вы можете использовать такое решение:

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
...