当前正在使用python脚本将csv转换为sql文件。生成csv时,未将NULL输入到文本文件中。因此,我必须解析数据,并且如果彼此之间有逗号(例如:、、),那么我知道我需要在两者之间输入一个空值。我在测试以查看记录中的最后一列是否为null时遇到问题。目前,我正在寻找逗号,如果之后找到另一个,它将设置为null,但最后只是一个逗号,然后字符串结束。
我尝试在这里四处寻找,我发现的大部分内容都与此link类似。我发现的不是解决当前问题的方法。
看看一个小的代码片段,看看我目前的工作方式(不起作用):
for text in line:
if(text == ',' and line[indexCurrent+1]==None):
newLine = line[indexCurrent] + '"NULL"' + line[indexCurrent+1]
这些是我当前的结果:
从此行:
2816 ,, "Jeremie Hermiston",, "789-yb-20772",
我得到这一行:
2816 ,"NULL", "Jeremie Hermiston","NULL", "789-yb-20772",
我想要这一行:
2816 ,"NULL", "Jeremie Hermiston","NULL", "789-yb-20772","NULL"
您还可以假定逗号是字符串中的最后一个字符,最后一个逗号后没有任何内容(甚至没有空格)。
答案 0 :(得分:1)
我设法使用re模块取得了您要求的结果。这是您的选择吗?
为清楚起见,分两个步骤,首先将所有的','替换为',“ None”,',然后将终止逗号(',$'; $是行锚的结尾)替换为', “无”'
a = '2816 ,, "Jeremie Hermiston",, "789-yb-20772",'
b = re.sub(',,',',"None",',a)
b = re.sub(',$',',"None"',b)