2015-05-27 6 views
-4

Я получил 2 .txt файлов, первый из которых организован следующим образом:Python несколько пар заменить в текстовом файле

1:NAME1 
2:NAME2 
3:NAME3 
... 

, а второй, как это:

1 
1 
1 
2 
2 
2 
3 

Я нужно сделать, это заменить каждую строку в .txt 2 по парам в .txt 1, как это:

NAME1 
NAME1 
NAME1 
NAME2 
NAME2 
NAME2 
NAME3 

есть ли способ сделать это? Я решил организовать первый txt, удалив 1: 2: 3: и прочитал его как массив, затем сделайте цикл для i в диапазоне (1, количество строк в txt 1), а затем в txt 2 найти строки, содержащие «i» и подставляя i-элемент массива. Но, конечно, я не знаю, как это сделать.

+0

Просто хранилище файлов 1 записей на словарь, файл 2 есть ключ Dict, и вы должны заменить значение т.е. ДИКТ [ключ] –

ответ

1

Как прокомментировал Родриго. Существует множество способов его реализации, но сохранение имен в словаре - это, вероятно, путь.

# Read the names 
with open('names.txt') as f_names: 
    names = dict(line.strip().split(':') for line in f_names) 

# Read the numbers 
with open('numbers.txt') as f_numbers: 
    numbers = list(line.strip() for line in f_numbers) 

# Replace numbers with names 
with open('numbers.txt', 'w') as f_output: 
    for n in numbers: 
     f_output.write(names[n] + '\n') 
0

Это должно сделать трюк. Он считывает первый файл и сохраняет пары k, v в dict. Этот dict используется для вывода v для каждого k, который вы найдете во втором файле.

Но .... если вы хотите предотвратить эти downvotes, лучше разместить собственный фрагмент кода, чтобы показать, что вы пробовали ... Прямо сейчас ваш вопрос - это красное одеяло для орды SO ' которые перекрывают все, что не содержит в себе кода. Черт, они даже отвечают за ответы, потому что в этом вопросе нет кода ...

lookup = {} 
with open("first.txt") as fifile: 
    for line in fifile: 
     lookup[line.split[":"][0]] = line.split[":"][1] 

with open("second.txt") as sifile: 
    with open("output.txt", "w") as ofile: 
     for line in sifile: 
      ofile.write("{}\n".format(lookup[line]) 
+0

Не пробовал, но ваш код jrmyp работал отлично. Не знаю, в чем проблема людей с этим downvoting, у меня появилась идея, но я не знал, как ее кодировать, вот почему я спрашиваю здесь! Благодарю вас, кстати – Hyperion

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