python - 在python中用逗号拆分列表,除非在python中被引号包围
问题描述
如果我有一个要在逗号所在位置拆分的字符串,如何排除任何被引号包围的子字符串?
前任。
输入:'a,b,3,"d,e",f,"e,xam,p,le,"]
输出:['a', 'b', '3', 'd,e', 'f', 'e,xam,p,le,']
使用 .split(',') 不起作用,因为它不排除引号中的项目,而且我不确定如何使用 re.split() 因为引号内可能有任何内容。没有设置逗号的子字符串长度或位置。我要求尽可能避免不必要的 for 循环!
谢谢!
解决方案
您可以利用该csv
模块来解析数据。由于您有一个字符串而不是文件,因此您可以使用它io.StringIO
来获取类似文件的对象。
代码只是:
import csv
from io import StringIO
reader = csv.reader(StringIO('a,b,3,"d,e",f,"e,xam,p,le,"'))
out = next(reader)
print(out)
# ['a', 'b', '3', 'd,e', 'f', 'e,xam,p,le,']
推荐阅读
- php - 从 AWS S3 GetObject() 获取 blob 的 PHP readfile()
- typescript - 如何收集特定令牌以向特定设备发送推送通知
- azure - 为什么 IoTHubMessages 是 Azure Functions 中的一个数组
- java - 使用 JDK 14 制作的应用程序能否在安装了 Java 版本 8 的机器上运行?
- javascript - Function.prototype() 到底是什么?它是一个合适的默认值吗?
- python - 如何在 pandas 中创建一个新列迭代现有列而不会出现下一个错误?
- github - 如何在 vscode 中禁用 github 登录
- node.js - 如何将节点 js 项目上传到 aws lambda?
- angular - Angular 8 ExpressionChangedAfterItHasBeenCheckedError 反应形式的无线电验证
- python - 请求到数据框