当使用 Python 字符串函数 split() 时,是否有人有巧妙的技巧将双引号包围的项目视为非拆分词?

假设我只想在空白处拆分,我有这个:

>>> myStr = 'A B\t"C" DE "FE"\t\t"GH I JK L" "" ""\t"O P   Q" R'
>>> myStr.split()
['A', 'B', '"C"', 'DE', '"FE"', '"GH', 'I', 'JK', 'L"', '""', '""', '"O', 'P', 'Q"', 'R']

我想将双引号内的任何内容都视为一个单词,即使嵌入了空格,也希望得到以下结果:
['A', 'B', 'C', 'DE', 'FE', 'GH I JK L', '', '', 'O P   Q', 'R']

或者至少这样,然后我会去掉双引号:
['A', 'B', '"C"', 'DE', '"FE"', '"GH I JK L"', '""', '""', '"O P   Q"', 'R']

任何非正则表达式的建议?

最佳答案

您将无法使用 str.split() 获得此行为。如果您可以接受它所做的相当复杂的解析(例如忽略以反斜杠开头的双引号),那么 shlex.split() 可能就是您要查找的内容:

>>> shlex.split(myStr)
['A', 'B', 'C', 'DE', 'FE', 'GH I JK L', '', '', 'O P   Q', 'R']

关于python - 不要用 Python 字符串 split() 拆分双引号单词?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7881794/

10-14 18:58