一尘不染

不使用Python字符串split()分割双引号单词吗?

python

使用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']

有非正则表达式建议吗?


阅读 655

收藏
2021-01-20

共1个答案

一尘不染

您将无法通过使用此行为str.split()。如果您可以进行相当复杂的解析(例如忽略双引号和反斜杠),shlex.split()那么您可能正在寻找:

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