在Python中,将带引号的字符串与不带引号的字符串分开

在Python中,将带引号的字符串与不带引号的字符串分开,python,string,Python,String,我有一个来自数据库字段的字符串,它是这样的,我把它变成了一个可变的词: spaceship cars boats "subway train" rocket bicycle "18 wheeler" 如果我使用以下命令对字符串进行拆分: words = string.split() 我得到的结果如下: ['spaceship', 'cars', 'boats', "'subway", "train'", 'rocket', 'bicycle', "'18", "wheeler'"] ['

我有一个来自数据库字段的字符串,它是这样的,我把它变成了一个可变的词:

 spaceship cars boats "subway train" rocket bicycle "18 wheeler"
如果我使用以下命令对字符串进行拆分:

words = string.split()
我得到的结果如下:

['spaceship', 'cars', 'boats', "'subway", "train'", 'rocket', 'bicycle', "'18", "wheeler'"]
['spaceship', 'cars', 'boats', "'subway train'", 'rocket', 'bicycle', "'18 wheeler'"]
我想将其拆分为一个列表,其中包含tact中引用的单词,因此列表如下所示:

['spaceship', 'cars', 'boats', "'subway", "train'", 'rocket', 'bicycle', "'18", "wheeler'"]
['spaceship', 'cars', 'boats', "'subway train'", 'rocket', 'bicycle', "'18 wheeler'"]

在python中有没有一种处理这种情况的方法

我想CSV可能是您的朋友

import csv
row = 'spaceship cars boats "subway train" rocket bicycle "18 wheeler"'
reader = csv.reader([row], delimiter=' ')
words = next(reader)

我想CSV可能是你在这里的朋友

import csv
row = 'spaceship cars boats "subway train" rocket bicycle "18 wheeler"'
reader = csv.reader([row], delimiter=' ')
words = next(reader)
您还可以使用模块:

另一种解决方案是使用以下形式的
regex

import re
re.split(your_regular_exp, x)
但这并不像shlex那么简单,但在其他情况下可能会很有用

您也可以使用模块:

另一种解决方案是使用以下形式的
regex

import re
re.split(your_regular_exp, x)
但这并不像shlex那么简单,但在其他情况下可能会很有用