Чем бы сцепить кучу слов?

12
N3
На сайте с 28.04.2014
Offline
98
#11

Спасибо, но в твоем примере получается что столбец 1 всегда идет на первом месте, а мне надо чтобы было "222 333" и "333 222" на выходе. А если слов 10 то в каждом из вариантов между собой:

222

222 333

222 444

222 333 444

222 444 333

333

333 222

333 444

333 222 444

...

Неискоренимо нежелание пользоваться поисковыми системами - даже находясь на форуме о поисковых системах © Cell Влазить напрямую в базу — это невозможно © Игорь Белов, mchost.ru Если SeoPult купил ссылку - значит она "рабочая" © Nat_SeoPult
iqmaker
На сайте с 17.04.2012
Offline
309
#12
Nam3D:
Спасибо, но в твоем примере получается что столбец 1 всегда идет на первом месте, а мне надо чтобы было "222 333" и "333 222" на выходе. А если слов 10 то в каждом из вариантов между собой:

это как спрашивали,

ваш вариант, будет совсем много генерить:


# -*- coding:utf-8 -*-
import itertools

cols = {}
for line in open('in.txt','r').readlines():
items = [x.strip() for x in line.split(',')]
for index, i in enumerate(items):
if index in cols:
cols[index].append(i)
else:
cols[index] = [i,]
tokens = cols.values()

result = set()
for i in itertools.product(*tokens):
for p in range(2, len(i)+1):
for n in itertools.permutations(i,p):
result.add( ', '.join(n) )

for r in result:
print (r)


---------- Добавлено 15.08.2014 в 03:49 ----------

при файле in.txt


1a, 2a, 3a, 4a
1b, 2b, 3b, 4b, 5b
1c, 2c, 3c, 4c

15360 вариантов

N3
На сайте с 28.04.2014
Offline
98
#13

Так, щас я соображу как это запустить, но судя по количеству вариантов - то что нужно.

iqmaker
На сайте с 17.04.2012
Offline
309
#14

Видимо под windows? Скачай и установи инсталлер python любой версии 2.7, 3.3, 3.4. Код положи в файл name.py, рядом файл in.txt со словами разделенными запятыми и двойной клик по name.py

N3
На сайте с 28.04.2014
Offline
98
#15

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

Ага, вроде то что нужно, запятушки правда чуток мешаются, но через замену выпилю. Спасибка, добрый человек!

ЗЫ для мышевозов, вдруг кто не поймет что делать:
открываем консоль и пишем
cd C:\Python34 - путь к питону
python.exe 1.py > C:\Python34\out.txt - путь к файлику где будет вывод текста.

Пока писал тут уже все поправили и сделали идеально :)

iqmaker
На сайте с 17.04.2012
Offline
309
#16

Ок, чтобы писало в файл добавь в конец:

open( 'out.txt', 'w' ).writelines( '\n'.join(result) )

на выходе будет out.txt, если запятые на выходе не нужны:

result.add( ', '.join(n) )

замени на

result.add( ' '.join(n) )

N3
На сайте с 28.04.2014
Offline
98
#17

iqmaker, аще идеально :) Спасибо еще раз.

iqmaker
На сайте с 17.04.2012
Offline
309
#18
Nam3D:
iqmaker, аще идеально Спасибо еще раз.

Всего хорошего!

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий