0

我正在尝试拆分一行看起来像这样的文本

host=randomhostid123 moreinfo id=otherstuffhere version="morestuff" type=TYPEA::TYPEB

我想使用 split 将其解析为

host=randomhostid123 moreinfo
id=otherstuffhere
version="morestuff"
type=TYPEA::TYPEB

为此,我正在使用

str.split('?[a-zA-Z]*=')

但是所有这一切都产生了原来的字符串我认为正则表达式看起来不错,但我是 python 正则表达式的新手

4

2 回答 2

3

您正在使用str.split(). 你想要的是re.split

re.split(r'\s+(?=[a-zA-Z]+=)', str)

这将在空格上拆分,后面跟着单词,单词后面紧跟=. 请注意,您必须将除空格之外的所有内容都放在前瞻中,以免它被拆分操作吞噬。

于 2013-06-27T23:42:51.823 回答
0

您的正则表达式中的 the?正在按字面意思进行解析,并且由于?您的字符串中没有它,因此它不会分裂。我认为您可能一直在进行正则表达式前瞻匹配,但string.split不支持正则表达式。


啊——看文档太久了!m.buettner 总结得非常好。

于 2013-06-27T23:41:40.923 回答