CSV的全称是Comma-Separated Values,故名思议,它通常是由逗号(comma)分隔的文件,当然也可以是其它字符分隔,这里我们仅以逗号为例。
在CSV文件中,如果每行字符串中除了逗号分隔符以外其它地方没有出现任何逗号时,我们可以很轻松的将其split为多个value,但是:
1、在value中出现逗号时,该文件格式会自动将其用双引号括起
2、在value中出现双引号是,该文件格式会自动将双引号变成两个连续的双引号。
最”复杂”的情况是:a“b,cd——>”a”“b,cd”
下面的python代码的功能是在”复杂”字符串中解析出每个value
def SplitStr(strdata):
cells = []
str = ""
flag = False
i = 0
while i < len(strdata):
ch = strdata[i]
if i == len(strdata)-1:
if ch == ',':
if not flag:
cells.append(str)
cells.append("")
else:
str += ch
else:
str += ch
cells.append(str)
str = ""
elif ch == ',':
if not flag:
cells.append(str)
str = ""
else:
str += ch
elif ch == '\"':
i += 1
if i < len(strdata) and strdata[i] == '\"':
str += strdata[i]
else:
i -= 1
flag = not flag
else:
str += ch
i += 1
return cells
测试代码:
str = "\"\"sd\"\"f,\"43,5\",\"\"34"
list = SplitStr(str)
for i in list:
print(i)
效果:
结束~