python - 使用自定义分隔符拆分字符串,尊重并保留引号(单引号或双引号)
问题描述
我有一个这样的字符串:
>>> s = '1,",2, ",,4,,,\',7, \',8,,10,'
>>> s
'1,",2, ",,4,,,\',7, \',8,,10,'
我想使用不同的分隔符(不仅仅是空格)来分割它,我也想尊重和保留引号(单引号或双引号)。
s
在分隔符上拆分时的预期结果,
:
['1', ',2, ', '', '4', '', '', ',7, ', '8', '', '10', '']
解决方案
看起来您正在重新发明 python 模块 csv。包括电池。
In [1]: import csv
In [2]: s = '1,",2, ",,4,,,\',7, \',8,,10,'
In [3]: next(csv.reader([s]))
Out[3]: ['1', ',2, ', '', '4', '', '', "'", '7', " '", '8', '', '10', '']
我认为,正则表达式通常不是好的解决方案。在意想不到的时刻,它可能会非常缓慢。在 csv 模块中可以调整方言,并且可以轻松处理任意数量的字符串/文件。
我未能同时将 csv 调整为 quotechar 的两个变体,但你真的需要它吗?
In [4]: next(csv.reader([s], quotechar="'"))
Out[4]: ['1', '"', '2', ' "', '', '4', '', '', ',7, ', '8', '', '10', '']
或者
In [5]: s = '1,",2, ",,4,,,",7, ",8,,10,'
In [6]: next(csv.reader([s]))
Out[6]: ['1', ',2, ', '', '4', '', '', ',7, ', '8', '', '10', '']
推荐阅读
- python - 如何更改 andrej carpathys char rnn 以使用非文本数据类型
- html - 如何使用 CSS 将字体缩放到视口,同时保持两列布局?
- aws-lambda - 如何在 org.kie.internal.io.ResourceFactory.newFileResource 修复“java.lang.NullPointerException”
- javascript - 列表未在 v-for 指令中呈现
- dart - 如何获取用户输入作为另一个屏幕的 URL?
- ios - iOS:根据分发证书生成苹果开发者证书
- xamarin.forms - 如何在 xamarin 表单中使用 kindle uri 方案?
- python - POST 请求不发送会话 cookie
- sql - sql server bcp export binary in csv,如何用''替换它?
- amazon-web-services - 如何在Route53中同一域下的不同EC2实例中配置两个不同的应用程序?