Python 使用正则表达式拆分字符串,但忽略引号中的分隔符,并且分隔符应该是动态的

Python 使用正则表达式拆分字符串,但忽略引号中的分隔符,并且分隔符应该是动态的,python,regex,Python,Regex,我使用下面的正则表达式分割字符串中的分隔符,但忽略引号中的分隔符 re.split('''[|,](?=(?:[^'"]|'[^']*'|"[^"]*")*$)'', data) 但是我手动声明的分隔符应该是动态的,我如何在上面的正则表达式中使用变量,而不是在正则表达式本身中指定分隔符 data="\"john\"|\"100032487\"|\"ab|cdef\"|\"ghijkl\"" output = re.split('''[|,](?=(?:[^'"]|'[^']*'|"[^"]*

我使用下面的正则表达式分割字符串中的分隔符,但忽略引号中的分隔符

re.split('''[|,](?=(?:[^'"]|'[^']*'|"[^"]*")*$)'', data) 
但是我手动声明的分隔符应该是动态的,我如何在上面的正则表达式中使用变量,而不是在正则表达式本身中指定分隔符

data="\"john\"|\"100032487\"|\"ab|cdef\"|\"ghijkl\""
output = re.split('''[|,](?=(?:[^'"]|'[^']*'|"[^"]*")*$)'', data)

我应该将这些分隔符分配给一个变量,并在上面的正则表达式中使用该变量,而不是
[|,]

看起来您正试图使用正则表达式来解析CSV样式的数据。Python库能够解析这一点

例如,以下方法:

import csv
from io import StringIO

data = "\"john\"|\"100032487\"|\"ab|cdef\"|\"ghijkl\""
print(next(csv.reader(StringIO(data), delimiter='|')))
将以列表中的四项形式返回数据:

['john', '100032487', 'ab|cdef', 'ghijkl']
由于第三项用引号括起来,通常意味着应该忽略其中的分隔符。这种必需的逻辑就是为什么不建议为此使用正则表达式的原因


csv.reader()
使
数据
像文件一样。

您想要的I/O是什么?我应该能够通过变量将分隔符发送到上述要拆分的正则表达式。我得到了想要的结果,但是我应该在拆分函数中将分隔符作为变量发送