代码之家  ›  专栏  ›  技术社区  ›  Barry66

为什么我的GTFS数据包含“不可见”换行符?

  •  0
  • Barry66  · 技术社区  · 9 年前

    因此,我一直在寻找将GTFS数据导入应用程序的SQLdb的方法。我在上找到了可用的解决方案 GitHub .

    但是,这是使用python编写的。我想我不能在我的windows应用程序中直接使用它。如果我错了,请纠正我。

    但我对理解解决方案背后的逻辑并创建自己的“解析器”没有任何问题。

    因此,我在记事本上打开了GTFS数据文件“calendar-dates.txt”,发现其内容令人困惑。就像:

    service_id,date,exception_type1,20151012,11,20151111,12,20150822,12,20150829,12.....

    你可以看到,当没有换行符时,它会令人困惑。 但我将代码粘贴到这里,向你们展示,它会自动格式化为:

    service_id,date,exception_type
    1,20151012,1
    1,20151111,1
    2,20150822,1
    2,20150829,1
    2
    

    现在这很有道理!!(中间有空格用于分析)。。

    但我不明白。记事本显示错误吗?那么,我如何“正确”地查看数据,以便编写自己的解析器?

    2 回复  |  直到 9 年前
        1
  •  1
  •   user473305 user473305    9 年前

    您的GTFS数据很可能是用UNIX行尾字符(仅限换行符)编写的,而不是用MS-DOS/Windows字符(回车符后跟换行符)。这是 permitted by the GTFS spec ,上面写着:

    每行必须以CRLF或LF换行符结尾。

    大多数适用于Windows的应用程序软件,包括记事本,只识别Windows的行尾字符,打开在UNIX上创建的文件将以单行显示整个内容,正如您所观察到的那样。然而,像Notepad++这样面向开发人员的工具,以及大多数编程库(如用于解析CSV文件的工具),通常都足够聪明,能够识别这两种格式并正确处理它们。

    维基百科有更多关于 end-of-line representations across operating systems 如果你感兴趣的话。

    最后,我要提到我最近发布到Github my own GTFS-to-SQLite loading tool ,用C编写,使用 libcsv 以解析GTFS数据。如果您使用的语言级别低于Python,您可能会发现它作为示例很有用。

        2
  •  0
  •   aldimeola1122    9 年前

    首先,复制相关的GTFS(路由、形状等),然后在在线文本编辑器中粘贴(例如: http://www.editpad.org/ )

    然后从这个在线文本编辑器复制并再次粘贴到原始的.txt文件中。