web上のcsvファイル(サンプル)は、 下のようなローカルファイルと同様の方法では読み込むことが出来ません。
fpath = '***.csv' with open(fpath, "r", encoding='shiftjis') as f: l = next(f)
そのため、urllib.requestモジュールを使って以下のように扱います。 その際に、open時にエンコードが指定できないため、シフトJISの場合はdecodeが必要になります。
import urllib.request fpath = 'https://raw.githubusercontent.com/computational-sediment-hyd/japaneseriverdb/master/data_pickup/8909090001oudan.csv' with urllib.request.urlopen(fpath) as response: l = next(response).decode('shiftjis')
なお、表形式のものはpandasを使って以下のように読み込むほうが簡単です。こちらはローカルファイルと同じです。
import pandas as pd fpath = 'https://raw.githubusercontent.com/computational-sediment-hyd/japaneseriverdb/master/data_pickup/8909090001kui.csv' df = pd.read_csv(fpath, encoding='shiftJIS')
上記では自動で型推論されるため、型を指定したい時はdtypeを設定します。
df = pd.read_csv(fpath, encoding='shiftJIS', dtype=str)
参考サイト
- How to read a CSV file from a URL with Python? - Stack Overflow
- urllib パッケージを使ってインターネット上のリソースを取得するには — Python 3.11.0b5 ドキュメント
- 【Python/urllib】日本語含むHTML取得
リンク