Как удалить строковые кавычки, запятые и круглые скобки из вывода Python itertools?

#python #itertools #more-itertools

Вопрос:

Этот приятный скрипт генерирует все 4 перестановки символов из данного набора s и печатает их на новых строках.

 import itertools   s = ('7', '8', '-')  l = itertools.product(s, repeat=4)  print(*l, sep='n')  

Пример вывода:

 ... ('9', '-', '7', '8') ('9', '-', '7', '9') ('9', '-', '8', '7') ('9', '-', '8', '8') ('9', '-', '8', '9') ...   

Я не могу понять, как удалить все одинарные кавычки, запятые и левую/правую скобки.

Желаемый результат:

 ... 9-78 9-79 9-87 9-88 9-89 ...   

Попробовал добавить:

  c = []  for i in l:  i = i.replace(",", '')  c.append(i)  print(*c, sep='n')   

Ошибка: AttributeError: 'tuple' object has no attribute 'replace'

Также пытался: я, кажется, не могу найти, куда вложить print(' '.join()) логику.

Комментарии:

1. print(*l, sep='n') печатается кортеж в каждой строке, который автоматически добавляет скобки и запятые при печати. попробуйте извлечь элементы кортежа и использовать join для создания строки

Ответ №1:

Каждый раз, когда вы печатаете значение, вы можете использовать:

 for vals in l:  print("".join([str(v) for v in vals]))  

Это просто объединяет все символы, отмечая, что для этого .join требуется, чтобы значения были строками.

Вы также можете использовать:

 for vals in l:  print(*vals)  

… но у этого есть пространство между значениями.

Комментарии:

1. Спасибо вам за помощь. Легко перевести ваше решение для записи в файл с помощью: with open('out.txt', 'w') as f: for i in l:f.write(''.join([str(v) for v in i]) 'n') .