Запись в файл

#python

#python

Вопрос:

Я пытался выполнить запись в файл, но он продолжал записывать их в одной строке с запятыми и квадратными скобками на обоих концах. Как мне выполнить запись в файл без квадратных скобок, запятых и перевода строки для каждой строки файла. Столбец 6 должен оставаться отсортированным в порядке убывания.

Это вывод из приведенного ниже кода:

 [NP_001026855.1, N, 1, YES, 96.4765%, 0.9823825] [NP_597716.1, D, 1, YES, 96.2573%, 0.9812865]
  

Вот мои коды.

          lines = open("file.txt", "r").readlines()
         outfile = open("file2.txt",'w ')
         lines = [x.split() for x in lines]
         lines.sort(key=lambda x:x[5], reverse=True)
         for i in lines:
             outfile.writelines(i)
  

Требуемый вывод должен быть:

 NP_001026855.1 N 1 YES 96.4765% 0.9823825

NP_597716.1    D 1 YES 96.2573% 0.9812865
  

Спасибо, ребята, за ваш вклад.

Комментарии:

1. Ошибка типа: может объединять список (не «str») в список только при использовании outfile. запись (i «n»).

Ответ №1:

Каждый элемент lines сам по себе является массивом. Попробуйте:

 for i in lines:
    outfile.write(" ".join(i)   "n")
  

.join() Метод принимает массив i и объединяет все элементы вместе с пробелом " " между каждым элементом. Затем добавляется новая строка "n" , чтобы убедиться, что ваш вывод разбит на отдельные строки.

С другой стороны, вам даже не нужно сохранять разделенную копию всех строк:

 lines = open("file.txt", "r").readlines()
outfile = open("file.2txt", "w")
lines.sort(key=lambda x: x.split()[5], reverse=True)
for i in lines:
    outfile.write(i)
  

Комментарии:

1. Привет, Грег, большое спасибо. эта строка «outfile. write(» «.join(i) «n»)» совершает волшебство.