ファブリックでリモートファイルを読み込もうとしています。ファイルがStringIOに正常にダウンロードされています。そのため、新規のために、のファイルをasume聞かせすることは、ローカルにある:PythonのStringIOとcsv.readerのトラブル2.7
fd=StringIO('#test=123\nblabla=456').getvalue()
今、私はコメントを削除すると同時に、テストの値を変更したい:
dict(next(csv.reader([item], delimiter='=', quotechar="'")) for item in next(csv.reader([fd], delimiter='\n', quotechar="'")))
私はエラーを取得します:
_csv.Error: new-line character seen in unquoted field - do you need to open the file in universal-newline mode?
しかし、どのように私はユニバーサル改行モードでファイルを開くのですか?
編集:
したがって、私はStringIOを読みました。しかし、私はまた、それを変更しています:csv
標準能力の範囲内
content = re.sub(r'(?m)^\#.*\n?', '', fd) # remove lines starting with #
dict(next(csv.reader([item], delimiter='=', quotechar="'")) for item in next(csv.reader([fd], delimiter='\n', quotechar="'")))
あなたの答えをありがとう!あなたが実際にfdで何かをしていないときにうまく動作します。しかし、私もそれを解析し、次に、TypeError:解析に予想される文字列またはバッファを取得します。だから私は本当にgetvalue() – gabn88
が必要なので、 'fd.getvalue()'を保持する新しい変数を定義する:done :)しかし、それを構文解析して+ csvに送ることはちょっと変わったようだ。潜在的に複雑な解析をやり直すのではなく、csvモジュールで解析を使用する必要があります。 –
ああ、そうですよ!本当にとても簡単で、難しいと思っていました。 – gabn88