Skip to main content
 首页 » 编程设计

用于在值可能有或没有引号时拆分由等号分隔的键/值对的 Python 正则表达式

2024年08月28日38zhenyulu

我想拆分一个字符串,例如:

CS ID=123 HD=CT NE="HI THERE" 

一个看起来像的列表

['CS', 'ID=123', 'HD=CT', 'NE=HI THERE'] 

shlex.split() 函数执行此操作,但速度非常慢。我需要找到一种非常快速的方法来执行此操作,可能使用 python 正则表达式。任何帮助表示赞赏。谢谢!

所以我没有预料到在 Jython 中使用 re 模块时几乎和 shlex 模块一样慢。有谁知道如何在没有 re 模块的情况下使用 Java 正则表达式或其他一些巧妙的方式来做到这一点?

请您参考如下方法:

不确定您是否真的想去掉 HI THERE 部分的引号,这个包括双引号。

>>> import re 
>>> x = '''CS ID=123 HD=CT NE="HI THERE"''' 
>>> re.findall("""\w+="[^"]*"|\w+='[^']*'|\w+=\w+|\w+""", x) 
['CS', 'ID=123', 'HD=CT', 'NE="HI THERE"'] 

在 HI THERE 部分没有引号

>>> map(''.join,re.findall("""(\w+=)"([^"]*)"|(\w+=)'([^']*)'|(\w+=\w+)|(\w+)""", x)) 
['CS', 'ID=123', 'HD=CT', 'NE=HI THERE']