我读了很多关于编码的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