parsing不一致的数据
数据应该是这样的:
Some junk data More junk data 1. fairly long key, all on one line value: some other text with spaces and stuff 2. hey look! another long key. still on one line value: a different value with some different information
这些文件有几个,通常在二十到三十之间。 键值对的总数超过20,000,这意味着手动更正每个文件是不可选的。 每个键的前缀数应该是正确的。 应该有一个值和下一个键之间的换行符。 每个值都应以string“value:”开头
现在,我一行一行地将每一行分类为键,值或垃圾。 然后我把这个数字parsing出来,并把数字,键和值存储在一个对象中。
数据格式不正确时出现问题。 以下是我迄今遇到的一些问题:
- 关键和价值之间没有换行。
- 在键或值的中间出现意外的换行符,这导致程序将每个键或值的一部分视为垃圾数据。
- “价值”一词拼写错误。
我通过计算每行的前六个字符与主string“value:”之间的Levenstein距离来处理第三种情况。 我怎样才能解决其他两个问题?
如果有问题的话,parsing是在一个node.js服务器上进行的,但是如果他们可以更容易地使用这个不一致的数据,我可以接受其他语言。
看看这个:
正则expression式: ^(\d+)\. ?(.+?)(?:value|vlaue|balue|valie): ?(.+?)[\n\r]{2,}
^(\d+)\. ?(.+?)(?:value|vlaue|balue|valie): ?(.+?)[\n\r]{2,}
在这里解释demo: http ^(\d+)\. ?(.+?)(?:value|vlaue|balue|valie): ?(.+?)[\n\r]{2,}
如果您修正了“拼写错误的值”问题,则可以将其简化为:
^(\d+)\. ?(.+?)value: ?(.+?)[\n\r]{2,}
^(\d+)\. ?(.+?)value: ?(.+?)[\n\r]{2,}
否则会添加许多拼写错误|
在那RegEx部分。
为了这个工作我迷上了:
- 行必须以数字和一个可选空格的点开始
-
key
是在id
和value
之前的所有东西 -
value
在至less2个换行符后结束
您还应该删除正确的条目,然后重新检查该文件以检查是否还有其他东西丢失。