Найдите и замените строки csv, используя список в python

У меня это до сих пор.

import csv ifile = open('file', 'rb') reader = csv.reader(ifile,delimiter='\t') ofile = open('file', 'wb') writer = csv.writer(ofile, delimiter='\t') findlist = ['A', 'G', 'C', 'T', 'Y', 'R', 'W', 'S', 'K', 'M', 'X', 'N', '-'] replacelist = ['AA', 'GG', 'CC', 'TT', 'CT', 'AG', 'AT', 'GC', 'TG', 'CA', 'NN', 'NN', '-'] rep = dict(zip(findlist, replacelist)) def findReplace(find, replace): s = ifile.read() s = s.replace(find, replace) ofile.write(s) for item in findlist: findReplace(item, rep[item]) ifile.close() ofile.close() 

То, что он делает, заменяет A на AA. Однако я хочу заменить все буквы теми, что есть в replacelist . Я очень новичок в python и не могу понять, почему он не заменяет все.

 HE670865 399908 NNNNN HE670865 399910 NNNNN HE670865 399945 TTNTT HE670865 399951 RRNAA HE670865 399957 AANAA HE670865 399978 CCCMC HE670865 399980 CCCCC HE670865 399982 TTTTK HE670865 399984 CCCCC HE670865 399908 NNNNN HE670865 399910 NNNNN HE670865 399945 TTNTT HE670865 399951 RRN AA AA HE670865 399957 AA AA N AA AA HE670865 399978 CCCMC HE670865 399980 CCCCC HE670865 399982 TTTTK HE670865 399984 CCCCC 

  • Убедитесь, что строка не содержит нескольких значений.
  • Проблема гнездования блока Jinja2
  • Подключение двух разных виджетов на qt с помощью python с помощью кнопки
  • django south migration, не устанавливает значение по умолчанию
  • Установка Scapy завершилась с ошибкой osx с ошибкой импорта dnet
  • SQLAlchemy: вставка результатов запроса в другую таблицу
  • Numpy Array в base64 и обратно в массив Numpy - Python
  • Есть ли способ реализовать такие методы, как __len__ или __eq__ как classmethods?
  • One Solution collect form web for “Найдите и замените строки csv, используя список в python”

    Это потому, что вы читаете и пишете внутри цикла.

     rep = dict(zip(findlist, replacelist)) s = ifile.read() for item in findlist: s = s.replace(item, rep[item]) ofile.write(s) 

    Кроме того, я думаю, что ваш код будет более читабельным (и более кратким), без использования ненужного dict .

     s = ifile.read() for item, replacement in zip(findlist, replacelist): s = s.replace(item, replacement) ofile.write(s) 
    Python - лучший язык программирования в мире.