Aru*_*pet 4 python string list
我试图用","分割字符串.'split'函数可以正常运行以下'example1'.
example1 = "1,'aaa',337.5,17195,.02,0,0,'yes','abc'"
example1.split(",")
Result: ['1', "'aaa'", '337.5', '17195', '.02', '0', '0', "'yes'", "'abc'"]
Run Code Online (Sandbox Code Playgroud)
但是,在这里我有一个场景,单引号中有逗号,我不想分开.
example2 = "1,'aaa',337.5,17195,.02,0,0,'yes','abc, def, xyz'"
example2.split(",")
Result: ["1,'aaa',337.5,17195,.02,0,0,'yes','abc,", 'def,', "xyz'"]
Run Code Online (Sandbox Code Playgroud)
但我试图得到这个结果:
['1', "'aaa'", '337.5', '17195', '.02', '0', '0', "'yes'", "'abc, def, xyz'"]
Run Code Online (Sandbox Code Playgroud)
如何通过字符串拆分功能实现此目的?
您应首先尝试使用内置函数或标准库作为列表读取数据,例如直接从CSV文件通过csv模块读取.
如果您的字符串来自您无法控制的源,则添加开始和结束方括号会给出有效list,因此您可以使用ast.literal_eval:
from ast import literal_eval
example2 = "1,'aaa',337.5,17195,.02,0,0,'yes','abc, def, xyz'"
res = literal_eval(f'[{example2}]')
# [1, 'aaa', 337.5, 17195, 0.02, 0, 0, 'yes', 'abc, def, xyz']
Run Code Online (Sandbox Code Playgroud)
这会根据需要将数值数据转换为整数/浮点数.如果您想将它们保留为字符串,根据@JonClements的评论,您可以传递给csv.reader:
import csv
res = next(csv.reader([example2], quotechar="'"))
# ['1', 'aaa', '337.5', '17195', '.02', '0', '0', 'yes', 'abc, def, xyz']
Run Code Online (Sandbox Code Playgroud)