私のコードで何が問題なのかを知るためにエンコーディングに関する多くのSOトピックを読みましたが、まだ固執しています。csvのポリライン - 文字列リテラルとは異なる動作
私はcsvファイルにあるGoogleのポリラインをデコードしたいと思います。私はうまく動作するポリラインライブラリを使用しています。問題は、csvの一部の行をCSVから読み込んだときに処理できないということですが、そのポリラインを文字列リテラルとして渡すだけで問題なく動作します。問題を作るポリラインには2つの連続するバックスラッシュやバッククォートがあるので、エンコードの問題だと思います。
import csv
import polyline
INPUT_FILE = 'sample_input.csv'
csv.register_dialect(
'mydialect',
delimiter = ',',
quotechar = '"',
doublequote = True,
skipinitialspace = True,
quoting = csv.QUOTE_ALL)
with open(INPUT_FILE, 'r', encoding="utf-8") as csv_file:
read = csv.reader(csv_file, dialect='mydialect')
header = next(read, [])
for row in read:
site_id = row[0]
encoded_polyline = row[1]
print(site_id)
try:
decoded = polyline.decode(encoded_polyline)
print(decoded)
except:
print(encoded_polyline)
print()
サンプルポリラインがある:
"dk`mEg}jx[[email protected]@[^[`@[email protected]@KTSVU\\[email protected]@[email protected]@F"
ここで、それはまた、唯一のバックスラッシュとバッククォートなしで表示されていることを注意してください - おそらく同様のエンコーディングの問題を?
特に、文字列リテラルの動作が文字列変数と同じでない理由については、何か助けてください。
あなたがエラーを取得しているあなたの問題を解決する必要がありますか?私はちょうど問題なしで文字列を実行しました。 – DJK
この文字列をpolyline.decode関数に渡すと問題はありませんが、csvから読み取ったときにエラー(バイト= ord(値[インデックス]) - 63 IndexError:文字列インデックスが範囲外です。バックスラッシュのない行は大丈夫に処理されます。 – rstk