0

ファイルをcsvファイルとして読み取る前に、ファイルの最初の行をチェックする賢い方法を探しています。# coding: xxx読み取ったデータをそれに応じてデコードできるように、行があるかどうかを確認したいと思います。ただし、そのような行がない場合は、最初の行にすでにデータセットが含まれている可能性があります。求めることは私にはとても残酷に思えます、私はそれをするためのきちんとした方法を望んでいました。

import re
import csv
fl = open(filename)
line = fl.readline()
coding = re.match('^#\s*coding\s*(:|=|:=)\s*([\w\d\-_]+)\s*$', line)
fl.seek(0)

reader = csv.reader(fl)
# ...
4

2 に答える 2

3

私はあなたの現在のアプローチに何も悪いことは見ていませんが、ここにあなたが好ましいと思うかもしれない代替案があります:

import re
import csv
import itertools

line = next(f1)
coding = re.match('^#\s*coding\s*(:|=|:=)\s*([\w\d\-_]+)\s*$', line)
reader = csv.reader(itertools.chain([line], f1))

質問や投稿したコードからは明らかではありませんが、正規表現が一致する場合に最初の行を含めたくない場合は、次のようにすることができます。

reader = csv.reader(f1 if coding else itertools.chain([line], f1))
于 2013-03-14T22:03:49.503 に答える
0

最初の行はこのようになりますか?

# coding: xxx, some other "field", and maybe another field

そうでない場合は、最初の行を読んで、コンマを探します。コンマが見つからない場合は、コーディングを解釈してみてください。そうでない場合は、それ(および他のすべての行)をcsv.reader()

于 2013-03-14T22:05:43.230 に答える