我一直在组织一个能够以我想要的方式处理字符串的函数.我已研究过了一把前面的问题1,2,3等等,我通过整理.这是设置,我有结构良好但可变的数据,需要从从文件读取的字符串拆分为字符串数组.以下展示了我正在处理的数据的一些示例
('Vdfbr76','gsdf','gsfd','',NULL),
('Vkdfb23l','gsfd','gsfg','ggg@df.gf',NULL),
('4asg0124e','Lead Actor/SFX MUA/Prop designer','John Smith','jsmith@email.com',NULL),
('asdguIux','Director, Camera Operator, Editor, VFX','John Smith','',NULL),
...
(492,'E1asegaZ1ox','Nysdag_5YmD','145872325372620',1,'long, string, with, commas'),
Run Code Online (Sandbox Code Playgroud)
我想基于逗号分割这些字符串,但是,字符串中偶尔会包含逗号,这会导致问题.除此之外,re.split(regex, line)在整个读取过程中,每行中的项目数量变化变得困难.
到目前为止我已经尝试过一些解决方案.
def splitLine(text, fields, delimiter):
return_line = []
regex_string = "(.*?),"
for i in range(0,len(fields)-1):
regex_string+=("(.*)")
if i < len(fields)-2:
regex_string+=delimiter
return_line = re.split(regex_string, text)
return return_line
Run Code Online (Sandbox Code Playgroud)
这将得到一个结果,我们有以下输出
regex_string
return_line
Run Code Online (Sandbox Code Playgroud)
然而,这个问题的主要问题是它偶尔会将两个字段混为一谈.在数组中的第3个值的情况下.
(.*?),(.*),(.*),(.*),(.*),(.*)
['', '\t(222', "'Vy1asdfnuJkA','Ndfbyz3_YMD'", "'14541242640005471'", '2', "'Hello World!')", '', '\n']
Run Code Online (Sandbox Code Playgroud)
理想的结果如下:
['', '\t(222', "'Vy1asdfnuJkA'", "'Ndfbyz3_YMD'", "'14541242640005471'", '2', "'Hello World!')", '', …Run Code Online (Sandbox Code Playgroud)