需要帮助解析字符串,其中包含每个属性的值。下面是我的示例字符串。。。
otherPartofString Name=<Series VR> Type=<1Ac4> SqVal=<34> conn ID=<2>
有时,字符串可以包含其他具有不同分隔符的值,如
otherPartofString Name=<Series X> Type=<1B3> SqVal=<34> conn ID=<2> conn Loc=sfo dest=chc bridge otherpartofString..
输出列将
Name | Type | SqVal | ID | Loc | dest
-------------------------------------------
Series VR | 1Ac4 | 34 | 2 | null | null
Series X | 1B3 | 34 | 2 | sfo | chc
1条答案
按热度按时间oxalkeyp1#
如前所述,要在示例数据上使用str\u to\u map函数,可以将pairdelim和keyvaluedelim设置为:
其中paridelim不区分大小写
(?i)
带有可选的>
后跟零个或多个空格,然后后跟一个预定义键(我们使用'|'.join(keys)
动态生成)或结束字符串锚定$
. keyvaluedelim是带有可选<
.我们需要对最后一个Map键的值进行一些后处理,因为没有锚定或模式将它们与其他不相关的文本区分开来(这可能是一个问题,因为它可能发生在任何键上),请告诉我您是否可以指定任何模式。
编辑:如果使用map进行不区分大小写的搜索效率较低,因为它需要一些昂贵的预处理,请尝试以下操作:
如果尖括号
<
以及>
仅当值或其下一个相邻键包含任何非单词字符时才使用,可以通过一些预处理来简化:edit-2:添加了一个字典来处理键别名: