Разделить CSV с Python на основе результатов регулярных выражений - PullRequest
1 голос
/ 28 марта 2019

Я начинающий питон, и мне нужна ваша помощь. Мне нужно разделить столбцы в 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 Ответ

1 голос
/ 28 марта 2019

Не уверен, что это правильный подход, но ваша конкретная ошибка связана с попыткой передать список строк сопоставителю регулярных выражений. Вам нужно будет передать каждую строку отдельно.

Вместо

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
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...