解析这种格式的文本文件有什么好的思路吗

2021-01-02 21:48:21 +08:00
 zxCoder
key1:value1
key2:value2,value3,value4
key3:value5,value6,
   value7,value8  [同一个 key 的 value 多行] 
   
body  [多行] 

格式大概是这样的,有什么解析的好思路吗,按行读取然后判断好难写

1356 次点击
所在节点    问与答
14 条回复
delectate
2021-01-02 22:05:40 +08:00
格式化为 json 吧。
qq292382270
2021-01-02 22:14:47 +08:00
数组=按行分割(全部文本)
循环数组,每行判断是否有符号:
有的话,符号:左边是 key,右边是 value(value 按符号,分割)
没有的话,代表这行全是 value(按符号,分割,归于上一个 key)
ysc3839
2021-01-02 22:39:12 +08:00
body 的内容呢?空的?
lululau
2021-01-02 23:38:35 +08:00
body 是个什么鬼,和 kv pairs 是个什么关系?能不能好好提问
xiangyuecn
2021-01-02 23:43:41 +08:00
邮件头 解析,也会存在第四行这种 被切成好几段的

关键在于第一个连续的两个换行符,是区分头和 body 的,这个规则跑不了
xupefei
2021-01-02 23:55:32 +08:00
写个简单的自动机就行了,在 value 状态下忽略空格和单换行
iseki
2021-01-03 01:30:15 +08:00
建议描述成 BNF (然后你就不用问了(
treblex
2021-01-03 08:31:59 +08:00
是 http 请求的格式吗
nerocc
2021-01-03 08:38:11 +08:00
写个简单的 lexer 呗
weyou
2021-01-03 10:31:54 +08:00
有点像 mime 邮件格式
raaaaaar
2021-01-03 11:43:23 +08:00
你先说这是什么格式。。
learningman
2021-01-03 11:51:02 +08:00
找换行符,找:不就好了
DOLLOR
2021-01-03 12:01:56 +08:00
太像 http 报文了,就当 http 报文解析吧。
Joker123456789
2021-01-06 15:29:24 +08:00
建议约束一下,value 不要换行,不然很蛋疼。

然后解析的时候可以 逐行读取,每行根据冒号分隔即可 拿到 key 和 value, 读到两个换行符的时候 就说明头读完了。 然后转到解析的 body 的算法,继续往下读就好了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/741100

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX