2015-03-10 3 views
0

Я искал множество сайтов и форумов, и я не могу заставить его работать. Я использовал read(), readline(), объединяющий все виды решений. Я пробовал во время цикла и все еще не мог понять. Вот задача. У меня есть 2 файла с расширением txt. Так файл1 list1.txt и файл 2 list2.txtСоздайте декартово произведение каждого слова из файла1 x file2

list1.txt имеют

dog 
flower 
person 

list2.txt имеют

123 
456 

То, что я хочу рядом. Новый документ list3.txt с:

dog123 
dog456 
flower123 
flower456 
person123 
person456 

Но я не могу использовать itertool, потому что я не могу объединить 2 файлов. Это запрещено. Any1 может помочь найти решение или дать совет.

+1

ли "Я не могу использовать itertool, потому что я не могу объединить 2 файла Thats использованы без разрешения." означает, что вы не можете использовать 'itertools' вообще? Или просто вы не можете вручную создать один файл и использовать 'itertools'? – Alex

+0

Я просто старался, что ответа не может быть: «скопируйте все в один list.txt и используйте комбинацию, перестановку или что-то подобное». – Difermo

ответ

0

Это работает:

with open('list1.txt', 'r') as l1, open('list2.txt', 'r') as l2, open('list3.txt', 'w') as l3: 
    for left_part in l1: 
     for right_part in l2: 
      l3.write('%s%s\n' % (left_part.replace("\n",""), right_part.replace("\n",""))) 
     l2.seek(0) 
+1

Почему бы просто не использовать 'with', поэтому вам не нужно закрывать файл? https://docs.python.org/2/reference/compound_stmts.html#the-with-statement –

+0

Спасибо, это работает – Difermo

+0

Обратите внимание, что я добавил закрытие list1.txt и list2.txt –

0

Посмотрите на Docs on Input and Output:

with open('list1.txt', 'r') as l1, open('list2.txt', 'r') as l2, open('list3.txt', 'w') as l3: 
    for i, l in enumerate(l1): 
     x = l1.readline() 
     for j, k in enumerate(l2): 
      l3.write('%s%s' % (x, l2.readline())) 
+1

Вы можете объединить эти первые три строки в одну. – Alex

+0

это не работает для меня – Difermo