我一直很难组织一个能以我想要的方式处理字符串的函数。我已经研究了之前的几个问题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'),
我想将这些字符串基于逗号进行拆分,但是字符串中偶尔会包含逗号,这会导致问题。除此之外,开发一个精确的re.split(regex, line)
变得很困难,因为在整个读取过程中,每行中的项目数都会发生变化。在
一些我已经尝试过的解决方案。在
^{pr2}$这将给出一个结果,其中我们有以下输出
regex_string
return_line
然而,这种方法的主要问题是,它偶尔会将两个字段聚集在一起。如果是数组中的第三个值。在
(.*?),(.*),(.*),(.*),(.*),(.*)
['', '\t(222', "'Vy1asdfnuJkA','Ndfbyz3_YMD'", "'14541242640005471'", '2', "'Hello World!')", '', '\n']
理想结果如下:
['', '\t(222', "'Vy1asdfnuJkA'", "'Ndfbyz3_YMD'", "'14541242640005471'", '2', "'Hello World!')", '', '\n']
这是一个很小的变化,但它对结果有很大的影响。我试图操纵正则表达式字符串以更好地适应我正在尝试的操作,但随着我解决的每一个案件,另一个不幸地打破了它。在
另一个例子是用户aroncronin在本文4中提出的,如下所示
def split_at(text, delimiter, opens='<([', closes='>)]', quotes='"\''):
result = []
buff = ""
level = 0
is_quoted = False
for char in text:
if char in delimiter and level == 0 and not is_quoted:
result.append(buff)
buff = ""
else:
buff += char
if char in opens:
level += 1
if char in closes:
level -= 1
if char in quotes:
is_quoted = not is_quoted
if not buff == "":
result.append(buff)
return result
结果如下:
["\t('Vk3NIasef366l','gsdasdf','gsfasfd','',NULL),\n"]
主要的问题是它是同一个字符串。这让我陷入了一个反馈循环。在
理想结果如下:
[\t('Vk3NIasef366l','gsdasdf','gsfasfd','',NULL),\n]
任何帮助都是感激的,我不知道在这种情况下最好的方法是什么。我也很乐意澄清出现的任何问题。我尽可能的完整。在
使用^{}'s ^{} !在
输出:
^{pr2}$相关问题 更多 >
编程相关推荐