Как записать строку из одного txt-файла в другой?

#python #csv #parsing #writetofile

Вопрос:

Мне нужно проанализировать некоторые данные, я успешно создал скрипт, который находит начало и конец теста и распечатает данные между ними.

Python, строка здесь взята из библиотеки csv

     else:
        print(line)
        # csv_file = open(title '.txt', "w")
        # writer = csv.writer(csv_file)
        # csv.writer(csv_file).writerow(line)
 

csv записывает чрезвычайно обалденные данные вместо строки в виде строки. Распечатка строки выглядит точно так же, как в txt-файле.

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

1. Почему вы используете csv модуль для записи обычного текстового файла? CSV предназначен для значений, разделенных запятыми (или символами). Пропустите csv часть; open файл и позвоните write по нему.

2. Ответ на вопрос, почему я делаю X, всегда будет таким: я понятия не имею, что я делаю, лол. Строка в формате csv, данные разделены запятыми, поэтому я предположил, что использую формат csv. Но теперь я вижу в этом ошибку.

3. В этом есть смысл! Но тогда вам также следует использовать средство чтения CSV. Он проанализирует строку в список Python с одним элементом для каждого столбца. Это то, чего ожидает автор CSV. (Однако, в зависимости от диалектов CSV, написанная строка может быть не совсем идентичной.) Но если вам не нужно проверять или манипулировать отдельными столбцами, вы можете полностью пропустить чтение и запись CSV и сохранить все в виде простых строк.

4. Кстати, причина, по которой вы получили «чрезвычайно забавные данные», заключается в том line , что переданная вами строка является повторяющейся, и повторение по ней приводит к появлению отдельных символов. Затем автор CSV записывает каждый символ в свой собственный столбец, возможно, в кавычках. T,h,a,t," ",g,e,t,s," ",m,e,s,s,y,.

5. Да, точно, это именно та проблема, с которой я столкнулся. Простое выполнение линий записи и передача списка работали идеально

Ответ №1:

Распечатка строки выглядит точно так же, как в txt-файле.

print функция принимает необязательный file аргумент, поэтому, если вы хотите записать файл точно так, как он выглядел бы в stdout, вы можете это сделать

 ...
with open("file.txt","w") as f:
    print(line, file=f)
 

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

1. Может потребоваться end='' , если line все еще содержит символ новой строки в конце. В противном случае вы получите пустую строку через каждую вторую строку.

2. В итоге я взял каждую строку, добавил список, а затем одну строку для конечного тега, записав список в txt-файл.