python - csv 中的折线 - 与字符串文字中的行为不同

标签 python python-3.x csv encoding google-polyline

我阅读了很多有关编码的主题,以了解我的代码出了什么问题,但我仍然陷入困境。

我想解码 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[STEFGJKRONUVSTkAtAiAlAsA~Ag@p@[^[`@e@p@KTSVU\\GHGNEHEHCFAFAFAFAPAP?N?B@T@V@R@F"

请注意,这里也只有一个反斜杠且没有反引号 - 可能是类似的编码问题?

任何帮助将不胜感激,特别是解释为什么字符串文字的行为与字符串变量的行为不同。

最佳答案

这应该可以解决您的问题

decoded = polyline.decode(encoded_polyline.replace('\\\\','\\'))

关于python - csv 中的折线 - 与字符串文字中的行为不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44979418/

相关文章:

python - 给定测地线的成对距离矩阵,哪些算法可用于为流形生成欧几里德嵌入?

python - 如何将 numpy 数组中的图像读入 PIL 图像?

python - Pandas 申请改变数据类型

python - 在 Python 中汇总 CSV 行

python-2.7 - 如何在 CSV 的第一列之后插入一列,然后用单个值填充它?

python - jinja2 打印到控制台或日志

python - 如何保存然后从数据框中的文件名中提取一些信息

python - 使用 numpy loadtxt 将导入字符串转换为 float

python - 使对象表现得像模块 - Python 3

python - CSV 行附加 : DictWriter always writes from first column