我正在尝试解析文档以构建可搜索的数据。该文档具有多个键/值对,由冒号:
确定。某些行在同一行上有多个键/值对。棘手的部分是除了冒号之外,键名和值的字符串都是不一致的。例如,冒号和值之间可能有1个空格或4个空格,每个值都可以包含空格,并且在同一行内的键/值对之间可以有不确定数量的空格。
示例文件:
Name: John Smith
Address: 123 Main St, Some City, ST 12345 Country: US
Date 1: 1/2/17 Date 2: 1/2/18
我需要提取:
{
"Name" : "John Smith",
"Address" : "123 Main St, Some City, ST 12345",
"Country" : "US",
"Date 1" : "1/2/17",
"Date 2" : "1/2/18"
}
答案 0 :(得分:1)
只要键,值和中间有任意数量的空格,就无法判断值何时结束并且下一个键开始。获取示例文档的最后一行,例如:是"Date 1":"1/2/17", "Date 2":"1/2/18"
还是"Date 1": "1/2/17 Date", "2": "1/2/18"
。因此,在没有任何进一步假设的情况下,您无法在一条线上清楚地分隔多个键/值对。
如果您只有一组固定的可能键,只需将它们添加为令牌并查找键令牌的出现位置,然后单击“:”。
如果失败,您可以对键和值的格式做出更多假设。例如,您可以假设键始终以字母字符开头。 警告:此类临时假设通常会忽略边缘情况,并可能导致不干净的数据。