为什么我的 GTFS 数据包含 "invisible" 换行符?

Why does my GTFS data contain "invisible" line breaks?

所以我一直在为我的应用程序寻找一种将 GTFS 数据导入 SQLdb 的方法。我在 GitHub.

上找到了可用的解决方案

但是,这是用python写的。我不认为我可以在我的 windows 应用程序中直接使用它。此处如有错误请指正

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

所以,我用记事本打开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

现在明白了!! (中间有空格用于解析)..

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

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

Each line must end with a CRLF or LF linebreak character.

大多数适用于 Windows 的应用程序软件,包括记事本,只能识别 Windows 行结束字符,打开在 UNIX 上创建的文件会将全部内容显示为一行,因为你观察过。但是,面向开发人员的 Notepad++ 等工具以及大多数编程库(例如用于解析 CSV 文件的库)通常足够智能,可以识别这两种格式并适当地处理它们。

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

最后,我会提到我最近发布到 Github my own GTFS-to-SQLite loading tool, which is written in C and uses libcsv 以解析 GTFS 数据。如果您正在使用低于 Python 的语言进行开发,您可能会发现它作为示例很有用。

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

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