簡體   English   中英

Python從請求響應中跳過標題行

[英]Python skip header row from request response

我正在查詢服務以獲取 csv 數據,我想通過跳過標題信息代碼將此 csv 提取附加到另一個文件中 -

response = requests.get('http://myservice.com&format=csv')
with open('out.csv', 'a', new like='') as f:
   writer = csv.writer(f)
   for line in response.iter_lines():
        next(line)
        writer.writerow(line.decode('utf-8').split('|'))

嘗試了上述但我收到錯誤

'bytes' 對象不是迭代器

response.iter_lines()是迭代器, lines是迭代的值。 所以調用next()沒有多大意義。

你可以:

iter_lines = response.iter_lines()
next(iter_lines, None)
for line in iter_lines:
    writer.writerow(line.decode('utf-8').split('|'))

您也可以嘗試直接讀入csv.DictReader ,例如:

response = requests.get('http://myservice.com&format=csv')
with open('out.csv', 'a') as f:
    reader = csv.DictReader(response.text.splitlines(), delimiter='|')
    writer = csv.DictWriter(f, reader.fieldnames)
    writer.writerows(reader)

試試

response = 
requests.get('http://myservice.com&format=csv')
with open('out.csv', 'a', new like='') as f:
    writer = csv.writer(f)
    rows = response.iter_lines()
    next(rows)
    for line in rows:
        writer.writerow(line.decode('utf-8').split('|'))

rows是需要跳過標題的迭代器,而line是每行讀取的實際內容。

for循環簡單地遵循迭代協議,即

  • 它通過在對象上調用iter獲得一個迭代器(一個迭代器返回自身,在這種情況下)
  • 它不斷調用next直到引發StopIteration異常

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM