正则表达式分割csv文件
讲道理的话,直接用最基本的字符串查找逗号然后截取的方式也可以,不过这显然不符合我的逼格嘛,那就用正则表达式好好折腾一下。
需求其实比较简单,csv文件的格式如下
1 | 1,ABC,7777, |
所有元素都是用逗号,分隔。也就是说,对于读入的每一行,我们要截取的字符串为逗号(或开头)中间部分。最开始的时候就是去各种百度谷歌有没有现成的(我不是很熟悉正则表达式ORZ),发现大部分都不能直接用,各个博客里写的一坨屎样。想想还是自己好好看了下wiki手撸了一个。正则表达式为
1 | ((?<=,)|^)([^,]*)((?=,)|$) |
具体的含义可以看正则表达式wiki不过这里有个小小的地方需要注意,如果出现了空内容也会被匹配(即逗号间内容为空)
另外,在python里,如果需要找到所有的匹配,应该使用findall方法,而不是search或者match方法。具体如下
1 | m = re.findall(r'((?<=,)|^)([^,]*)((?=,)|$)', line) |