【发布时间】:2021-10-06 23:18:46
【问题描述】:
我确实有一些可能的字符串格式,我正在尝试将其转换为列表,但是当字符串中有双引号时我遇到了一些麻烦,这应该被转换为列表。
对于简单的格式:'test 3,9,tag1,G,comment 1'
可以很容易地用命令转换:values = line.split(',')
并得到 values = ['test 3','9','tag1','G','comment 1'] 的结果。
当字符串的格式看起来像这样时,问题就开始了:'test 4,77,tag2,Y,"comment 2, comment 3"',它应该被转换成一个列表,比如:['test 4','77','tag2','Y','"comment 2, comment 3"']
或格式:'test 6,1,"tag2, tag3, tag4",Y,"comment 2, comment 3"' 应转换为['test 6','1','"tag2, tag3, tag4"','Y','"comment 2, comment 3"']。
显然,如果我对上述字符串使用line.split(',') 命令,我将得到列表['test 6','1','"tag2', 'tag3', 'tag4"','Y','"comment 2', 'comment 3"'],这不是正确的。
我的下一步是将双引号内的信息转换为一个列表,例如:['tag2', 'tag3', 'tag4'],但是一旦我设法将它们转换为单独的字符串,这将非常简单。
我考虑过使用正则表达式解决方案,但我似乎没有做对。 任何帮助将不胜感激。
【问题讨论】:
-
让我猜猜,这些字符串来自
.csv文件?解析后真的要保留双引号吗?通常双引号表示“忽略引号内的逗号”,但逻辑值确实不包含引号,因此您实际上最终会得到['test 6','1','tag2, tag3, tag4','Y','comment 2, comment 3']。您真的要保留双引号吗? -
如果您正在阅读 .csv,首先使用标准 Python 库中的
csv.reader将节省您编写完全相同的东西的大量工作。根据您从中获得的结果,拆分仍需要拆分的字段将很简单
标签: python python-3.x string split