I am reading a csv into a:
import csv
import collections
import pdb
import math
import urllib
def do_work():
a=get_file('c:/pythonwork/cds/cds.csv')
a=remove_chars(a)
print a[0:10]
def get_file(start_file): #opens original file, reads it to array
with open(start_file,'rb') as f:
data=list(csv.reader(f))
return (data)
def remove_chars(a):
badchars=['a','b','c','d']
for row in a:
for letter in badchars:
row[8].replace(letter,'')
return a
I would like to replace all occurrences of ['a','b','c','d'] in the 8th element of the line with empty string. the remove_chars function is not working.
Is there a better way to do this?
To make the method replace() replace all occurrences of the pattern you have to enable the global flag on the regular expression: Append g after at the end of regular expression literal: /search/g. Or when using a regular expression constructor, add 'g' to the second argument: new RegExp('search', 'g')
The replace() method replace() is a built-in method in Python that replaces all the occurrences of the old character with the new character.
In C++, the STL provides a function to replace() to change the contents of an iterable container. As string is a collection of characters, so we can use the std::replace() function to replace all the occurrences of character 'e' with character 'P' in the string.
The problem is you're not doing anything with the result of replace. In Python strings are immutable so anything that manipulates a string returns a new string instead of modifying the original string.
line[8] = line[8].replace(letter, "")
I would use the translate method without translation table. It deletes the letters in second argument in recent Python versions.
def remove_chars(line):
line7=line[7].translate(None,'abcd')
return line[:7]+[line7]+line[8:]
line= ['ad','da','sdf','asd',
'3424','342sfas','asdfaf','sdfa',
'afase']
print line[7]
line = remove_chars(line)
print line[7]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With