1. ホーム
  2. python

[解決済み】TypeError: 'newline' is an invalid keyword argument for this function [重複] この関数のキーワード引数は無効です。]

2022-02-10 04:50:03

質問

次のコードは、ファイルの情報を抽出し、その2列目のオブジェクトを基準にアルファベット順に並べるものです。

import csv
import operator
import sys

def re_sort(in_file='books.csv', out_file='books_sort.csv'):
    data = csv.reader(open('books.csv', newline=''), delimiter=',')
    header = next(data)
    sortedlist = sorted(data, key=operator.itemgetter(1))
    with open("books_sorted.csv", "w", newline='') as csvfile:
        cvsWriter = csv.writer(csvfile, delimiter=',')
        cvsWriter.writerow(header)
        cvsWriter.writerows(sortedlist)

このコードをコマンドラインで実行しようとすると、いつもTypeError: 'newline' is an invalid keyword argument for this functionというエラーが出ます。なぜこのようなことが起こるのか、皆さんは理由がわかりますか?以下は、ファイル内のコンテンツの構造化バージョンです。

Title,            Author,        Publisher,  Year,  ISBN-10,   ISBN-13
Automate the...,  Al Sweigart,   No Sta...,  2015,  15932...,  978-15932...
Dive into Py...,  Mark Pilgr..., Apress,     2009,  14302...,  978-14302...
"Python Cook...,  "David Bea..., O'Reil...,  2013,  14493...,  978-14493...
Think Python...,  Allen B. D..., O'Reil...,  2015,  14919...,  978-14919...
"Fluent Pyth...,  Luciano Ra..., O'Reil...,  2015,  14919...,  978-14919...

解決方法は?

これはあなたを助けることができるかもしれません。あなたがやろうとしていることに対して、それは無効な変数名であるように思われます。

newline="" が csv.writer() のオプションとして無効なため、エラーが発生します。これを変更することで問題が解決するはずです。ここに見られるように