Don';是否使用Python字符串split()拆分双引号单词?

Don';是否使用Python字符串split()拆分双引号单词?,python,string,split,Python,String,Split,在使用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"',

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

任何非正则表达式建议?

我建议您使用
re
搜索模式“[^”]*”并仅对其余部分应用string.split。您可以实现一个递归函数来处理所有相关的字符串部分。

您将无法使用
str.split()获得此行为
。如果您可以接受它所做的相当复杂的解析(例如忽略前面带有反斜杠的双引号),那么您可能正在寻找:

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

@罗布:如果regexp解决方案这么简单,为什么没有regex呢

my_str = 'A B\t"C" DE "FE"\t\t"GH I JK L" "" ""\t"O P   Q" R'
print re.findall(r'(\w+|".*?")', my_str)
['A', 'B', '"C"', 'DE', '"FE"', '"GH I JK L"', '""', '""', '"O P   Q"', 'R']

@PabloG-尽管通常是一个简单的解决方案,但我个人还没有遇到过regex没有更多长期成本的案例。对于这个具体案例,我非常确定这是一个解决了的问题,我只是能够找到它——似乎Sven为我指出了shlex的正确方向。谢谢Sven——这正是我想要的我在找!太棒了,非常有帮助。谢谢!