2015-06-30 2 views
1

Я работаю над программой python, целью которой является создание инструмента, который берет слово первого слова из файла и помещает его рядом с другой строкой в ​​другом файле.Python, связывающий 2 строки

Это фрагмент кода:

lines = open("x.txt", "r").readlines() 
lines2 = open("c.txt", "r").readlines() 
for line in lines: 
    r = line.split() 
    line1 = str(r[0]) 
    for line2 in lines2: 
     l2 = line2 
    rn = open("b.txt", "r").read() 
    os = open("b.txt", "w").write(rn + line1+ "\t" + l2) 

, но он не работает правильно.

Вопрос в том, что я хочу, чтобы этот инструмент взял первое слово из файла и поместил его рядом с строкой из другого файла для всех строк в файле.

Например:

Файл: 1.txt:

hello there 
hi there 

Файл: 2.txt:

michal smith 
takawa sama 

Я хочу, чтобы результат:

Выход:

hello michal smith 
hi takaua sama 
+0

Это не то, как работают вложенные петли. Вы ищете ['zip'] (https://docs.python.org/3/library/functions.html#zip):' для a, b в zip (lines, lines2): '. – TigerhawkT3

ответ

1

Используя функцию zip, вы можете перемещаться одновременно. Затем вы можете вытащить первое слово из своего приветствия и добавить его в имя для записи в файл.

greetings = open("x.txt", "r").readlines() 
names = open("c.txt", "r").readlines() 

with open("b.txt", "w") as output_file: 
    for greeting, name in zip(greetings, names): 
     greeting = greeting.split(" ")[0] 
     output = "{0} {1}\n".format(greeting, name) 
     output_file.write(output) 
+0

thx, который отлично работал, но у меня возникла небольшая проблема – DEMONKINGLBH

+0

, когда я связал их вместе, тексты арабского языка превратились в китайские тексты, почему это так? – DEMONKINGLBH

+0

Это звучит как проблема с unicode, а не проблема с zip. – Brobin

1

Да, как Tigerhawk указано Вы хотите использовать zip функции, которая сочетает в себе элементы из разных итерируемых в том же индексе, чтобы создать список кортежей (каждый Ith кортеж имеет элементы из Ith индекса из каждого списка).

Пример кода -

lines = open("x.txt", "r").readlines() 
lines2 = open("c.txt", "r").readlines() 
newlines = ["{} {}".format(x.split()[0] , y) for x, y in zip(lines,lines2)] 
with open("b.txt", "w") as opfile: 
    opfile.write(newlines) 
0
from itertools import * 

with open('x.txt', 'r') as lines: 
    with open('c.txt', 'r') as lines2: 
     with open('b.txt', 'w') as result: 
      words = imap(lambda x: str(x.split()[0]), lines) 
      results = izip(words, lines2) 
      for word, line in results: 
       result_line = '{0} {1}'.format(word, line) 
       result.write(result_line) 

Этот код будет работать без загрузки файлов в память.

Смежные вопросы