Split CSV with python based on regex findings

General Tech Bugs & Fixes 2 years ago

0 2 0 0 0 tuteeHUB earn credit +10 pts

5 Star Rating 1 Rating

Posted on 16 Aug 2022, this text provides information on Bugs & Fixes related to General Tech. Please note that while accuracy is prioritized, the data presented might not be entirely correct or up-to-date. This information is offered for general knowledge and informational purposes only, and should not be considered as a substitute for professional advice.

Take Quiz To Earn Credits!

Turn Your Knowledge into Earnings.

tuteehub_quiz

Answers (2)

Post Answer
profilepic.png
manpreet Tuteehub forum best answer Best Answer 2 years ago

 

I am a python beginner and need your help. I need to split columns in a CSV on certain places which I find with regex. Split applied to CSV produces errors. Besides, some findings are not equal distributed in the columns.

The structure of CSV is like this:

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

I need to split after every e and to transform the CSV like this:

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

I have this code :

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)

I'm getting this error :

TypeError: expected string or bytes-like object

profilepic.png
manpreet 2 years ago

 

Not sure if this is the correct approach, but your specific error comes from trying to pass a list of strings">strings to the regex matcher. You'll need to pass it each string separately.

Instead of

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

Write

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

Edit: Never mind, this answer assumed that reader was a file handle rather than a CSV reader.

The CSV reader returns an iterable of iterables. I now suspect this is not the right approach, but if you want to split each cell of the CSV, you need to write

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

0 views   0 shares

No matter what stage you're at in your education or career, TuteeHub will help you reach the next level that you're aiming for. Simply,Choose a subject/topic and get started in self-paced practice sessions to improve your knowledge and scores.