我讀了很多關於編碼的SO主題,以瞭解我的代碼有什麼問題,但我仍然陷入困境。來自csv的多義線 - 與字符串文字不同的行爲
我想解碼我在csv文件中的Google多段線。我正在使用可以正常工作的折線庫。問題是,當我從csv讀取它們時,某些來自csv的行無法處理,但是當我只是將該折線作爲字符串文字傳遞時,它可以正常工作。我認爲這是一些編碼問題,因爲出現問題的多段線有兩個連續的反斜槓和/或反斜槓。
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讀取它時出現錯誤(byte = ord(value [index]) - 63 IndexError:string index out of range)。沒有反斜槓的行可以正常處理。 – rstk