8

私が調査したことから、 csv.writeRow はリストを取り、それを指定された csv ファイルに書き込む必要があります。これが私が試したことです:

from csv import writer
with open('Test.csv', 'wb') as file:
        csvFile, count = writer(file), 0
        titles = ["Hello", "World", "My", "Name", "Is", "Simon"]
        csvFile.writerow(titles)

各単語が異なる列にあるように書こうとしています。

ただし、作成したファイルを開くと、次のメッセージが表示されます。

ここに画像の説明を入力

とにかく続行を押した後、ファイルが破損しているか、SYLK ファイルであるというメッセージが表示されます。その後、ファイルを開くことができますが、ファイルを開くたびに 2 つのエラー メッセージが表示された後でのみです。

どうしてこれなの?

ありがとう!

4

1 に答える 1

15

最初の 2 文字が「ID」の場合、Excel が csv ファイルを SYLK と見なすという問題が文書化されています。

意見の領域に足を踏み入れる - そうすべきではありませんが、Excel は拡張機能よりもよく知っていると考えています。公平を期すために、人々は拡張子が本当に間違っているケースを把握できると期待していますが、このような場合は拡張子が間違っていると仮定し、解釈された場合に破損していないように見えるときにファイルが破損しているとさらに仮定します。拡張子によると、気が遠くなるようなものです。

@John Y は次のように指摘しています。

注意すべきことの1つは、@PeterDeGlopperによってリンクされたMicrosoftの問題によって提供される「回避策」は、(手動で)ファイルにアポストロフィを追加することです。(これは、StackOverflow を含む Web で一般的に見られるアドバイスでもあり、CSV の数字を数値ではなく文字列として処理するように強制します。) これは、データにリテラル アポストロフィを挿入するため、私が良いアドバイスと呼ぶものではありません。 .

@DSM はquoting=csv.QUOTE_NONNUMERICライターでの使用を提案しています。"ID"Excel はではなく で始まるファイルによって混同されることはありませんID。そのため、CSV で動作する他のツールがその引用レベルを受け入れる場合、これは Excel の混同を無視する以外におそらく最善の解決策です。

于 2013-08-07T22:50:37.837 に答える