我不明白你是否清楚地了解你想要获得的东西。
你说“我知道(...)我的用例是一种滥用”。
但滥用意味着存在使用的可能性。
但是,在您的情况下,没有可能的用途,您“描述”的内容是不可能的,因为传递给 CSV 解析器的内容必须是有效的 CSV 格式,而您的不是。
在 CSV 有效字符串中,大多数字符是信息,一些字符是解释字符串以提取信息所必需的元信息。
您描述的是您希望字符"
应该完全属于信息类别和元信息类别。就像有人想用左手抓住他/她的左手......
您的字符串出现此问题,因为它不是来自读取 CSV 文件的字符串。这是一个按原样编写的字符串。
从 CSV 文件的读取中获取这样的字符串是不可能的,因为它不可能像这样写在 CSV 文件中。
如果写入 CSV 文件,'"simple|split"|test'
可以写入
"""simple|split"""|test
设置doublequote
为 True,默认
或#"simple#|split#"|test
与doublequote = False, escapechar = '#'
.
如果你想像你描述的那样提取信息,你不必创建解析器,你只需要使用一个已经存在的工具:
import re
reg = re.compile('".*?"|[^|]+')
print reg.findall('yoo|"simple|split"|test|end"pos|hu')
结果
['yoo', '"simple|split"', 'test', 'end"pos', 'hu']