我想分割一个字符串,例如:
CS ID=123 HD=CT NE="HI THERE"
到一个看起来像这样的列表
['CS', 'ID=123', 'HD=CT', 'NE=HI THERE']
shlex.split()
函数可以执行此操作,但速度非常慢。我需要找到一种非常快速的方法来做到这一点,可能使用 python 正则表达式。任何帮助表示赞赏。谢谢!
所以我没有预料到 re 模块在 Jython 中使用时几乎和 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']
关于Python 正则表达式,用于在值可能有或没有引号时拆分由等号分隔的键/值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20909563/