#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-файл.