peanutbutterguy
peanutbutterguy

Reputation: 57

List append not working Python

I'm working on a script to remove bad characters from a csv file then to be stored in a list.

The script runs find but doesn't remove bad characters so I'm a bit puzzled any pointers or help on why it's not working is appreciated

def remove_bad(item):
    item = item.replace("%", "")
    item = item.replace("test", "")
    return item


raw = [] 

with open("test.csv", "rb") as f:
    rows = csv.reader(f)
    for row in rows:
        raw.append((remove_bad(row[0].strip()),
                    row[1].strip().title()))

print raw

Upvotes: 0

Views: 316

Answers (2)

adrianus
adrianus

Reputation: 3199

If I have a csv-file with one line:

tst%,testT

Then your script, slightly modified, should indeed filter the "bad" characters. I changed it to pass both items separately to remove_bad (because you mentioned you had to "remove bad characters from a csv", not only the first row):

import csv

def remove_bad(item):
    item = item.replace("%","")
    item = item.replace("test","")
    return item


raw = [] 

with open("test.csv", "rb") as f:
    rows = csv.reader(f)
    for row in rows:
        raw.append((remove_bad(row[0].strip()), remove_bad(row[1].strip()).title()))

print raw

Also, I put title() after the function call (else, "test" wouldn't get filtered out).

Output (the rows will get stored in a list as tuples, as in your example):

[('tst', 'T')]

Upvotes: 2

zverianskii
zverianskii

Reputation: 471

Feel free to ask questions

import re
import csv
p = re.compile( '(test|%|anyotherchars)') #insert bad chars insted of anyotherchars
def remove_bad(item):
    item = p.sub('', item)
    return item

raw =[] 

with open("test.csv", "rb") as f:
    rows = csv.reader(f)
    for row in rows:
        raw.append( ( remove_bad(row[0].strip()),
                     row[1].strip().title() # are you really need strip() without args?
                    ) # here you create a touple which you will append to array
                  )

print raw

Upvotes: 0

Related Questions