CSVファイルをPythonにインポートする必要があります。ファイルは ';'で区切られ、英語以外の記号とコンマ( '、')を含む文字列が含まれています。
私は投稿を読みました:
Pythonを使用してCSVファイルをsqlite3データベーステーブルにインポートする
私が走るとき:
with open('d:/trade/test.csv', 'r') as f1:
reader1 = csv.reader(f1)
your_list1 = list(reader1)
問題が発生しました:コンマが「-」記号に変更されました。
私が試してみると:
df = pandas.read_csv(csvfile)
エラーが発生しました:
pandas.io.common.CParserError:データのトークン化中にエラーが発生しました。 Cエラー:13行目に1つのフィールドが必要で、2が表示されました。
助けてください。 CSVファイルのすべてのフィールド名をリストせずにコードが短いため、pandasを使用することをお勧めします。
一時的にカンマを置き換える回避策がある可能性があることを理解しています。それでも、パンダへのいくつかのパラメータでそれを解決したいと思います。
パンダソリューション-使用 read_csv
正規表現区切り文字付き[;,]
。追加する必要がありますengine='python'
、警告のため:
ParserWarning:「c」エンジンは正規表現セパレーターをサポートしていないため、「python」エンジンにフォールバックします(1文字を超え、「\ s +」とは異なるセパレーターは正規表現として解釈されます)。 engine = 'python'を指定することで、この警告を回避できます。
import pandas as pd
import io
temp=u"""a;b;c
1;1,8
1;2,1
1;3,6
1;4,3
1;5,7
"""
#after testing replace io.StringIO(temp) to filename
df = pd.read_csv(io.StringIO(temp), sep="[;,]", engine='python')
print (df)
a b c
0 1 1 8
1 1 2 1
2 1 3 6
3 1 4 3
4 1 5 7
パンダのドキュメントには、パラメータについて記載されています。
pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html
sep : str, default ‘,’
Delimiter to use. If sep is None, will try to automatically determine this.
Pandasは、;
で区切られたファイルを解析しませんでした。これは、デフォルトがNone
でなく、,
であるためです。 sep
のpandas
パラメータセットを;
に追加すると、問題が修正されました。
CSVファイルが壊れていない限り、csv
にフォーマットを推測させることができます。
import csv
with open('d:/trade/test.csv', 'r') as f1:
dialect = csv.Sniffer().sniff(f1.read(1024))
f1.seek(0)
r = csv.reader(f1, dialect=dialect)
for row in r:
print(row)
エンコーディングを指定してみてください。読み取ろうとしているファイルのエンコーディングを確認する必要があります。
この例ではASCII)を使用しましたが、異なる場合があります。
df = pd.read_csv(fname, encoding='ascii')