#python #csv
#python #csv
Вопрос:
Я хочу записать ответ в формат csv. Вот мой код:
import requests
from bs4 import BeautifulSoup
import csv
import time
site = 'url'
with open('receipts_10.csv', 'rU') as csvfile:
reader = csv.reader(csvfile, delimiter=';')
for row in reader:
response = requests.post(site, params={'appReceiptNum':row})
soup = BeautifulSoup(response.text)
status = soup.find("h4")
statusString = status.text
Я открыл файл csv, и теперь я хочу перезаписать тот же csv с выводом:
print(statusString)
Как вы можете видеть, я только распечатываю ответ в консоли, но вместо этого мне нужен файл .csv. Есть идеи?
Комментарии:
1. Если вы хотите записать , вы используете
writer()
неreader()
. И вам нужно открыть файл для записи ,'w'
а не для чтения.2. О, извините, я сначала прочитал файл, и теперь я пытаюсь отправить выходные данные в тот же файл.
Ответ №1:
Просто используйте средство записи csv.
Что-то вроде
with open('receipts_10.csv', 'rU') as csvfile:
reader = csv.reader(csvfile, delimiter=';')
outfile = 'somefile.csv'
ofile = open(outfile,"wb")
writer = csv.writer(ofile,delimiter=";")
for row in reader:
response = requests.post(site, params={'appReceiptNum':row})
soup = BeautifulSoup(response.text)
status = soup.find("h4")
statusString = status.text
writer.writerow(statusString)
Вам, конечно, может потребоваться выполнить некоторое форматирование строки состояния, изменить разделитель, кавычки или другие параметры в writer. Используйте документацию Python для библиотеки csv, которая поможет вам. Но это основной принцип.
Если вы на самом деле ничего не читаете из файла csv, вам, конечно, не нужен Reader.
Комментарии:
1. В итоге я получил: IndentationError: неожиданный отступ
2. Вам нужно будет посмотреть, что находится в вашей строке состояния, и посмотреть, доступно ли это для записи в файл csv [например, выглядит как список строк], и если нет, выполните соответствующее переформатирование.
3. Ошибка отступа — это синтаксическая проверка ваших табуляций / интервалов… Все, что находится в разделе with, должно быть с вкладками