根据正则表达式的发现,使用python分割CSV

时间:2019-03-28 12:03:46

标签: python regex

我是python初学者,需要您的帮助。我需要在regex找到的某些位置上以CSV格式拆分列。 应用于CSV的分割会产生错误。此外,某些发现在各列中分布不均。

CSV的结构如下:

a; b; c; 
d; e, f, g; h
i; j,e; k

我需要在每个e之后进行拆分,并像这样转换CSV:

a;  ; b; c;
d; e; f, g; h
i; j; e; k

我有此代码:

import csv
import re
r = re.compile("r'....\(...\)")
with open('test.csv', 'r') as csvfile:
  reader = csv.reader(csvfile, delimiter=';')
  your_list = list(reader)
your_list=r.split(your_list)    
print(your_list)

我遇到此错误:

  

TypeError:预期的字符串或类似字节的对象

1 个答案:

答案 0 :(得分:1)

不确定这是否正确,但是您的特定错误来自尝试将字符串列表传递给正则表达式匹配器。您需要将每个字符串分别传递给它。

代替

your_list = list(reader)
your_list=r.split(your_list)

your_list=[r.split(x) for x in reader]

编辑:没关系,此答案假设reader是文件句柄而不是CSV阅读器。

CSV阅读器返回可迭代的可迭代项。我现在怀疑这不是正确的方法,但是如果您想分割CSV的每个单元格,则需要编写

your_list=[
    [r.split(cell) for cell in row]
    for row in reader
]