I have a CSV that looks like this
"String1","variablelengthstring1","No" "String2","variablelengthstring2","No"
String1 and string2 does NOT contain the characters "
or ,
variablelengthstring1 and variablelengthstring2 does NOT contain the characters "
or ,
The output file should look like this
String1 variablelengthstring1 String2 variablelengthstring2
So I want to remove the last 6 chars on each line, i.e.
","No"
Then, I want to remove all "
from the file
Then, I want to replace all ,
with a space
That should safely accomplish what I am trying to do
Advertisement
Answer
The easiest way is to just create a program that reads the file line by line, splitting each line up with .split(',')
, removing all "
s from the string, then printing the first parts. Like this:
with open('test.csv') as csv: for row in csv.readlines(): cols = [s.replace('"', '') for s in row.split(',')] print(cols[0], cols[1])
If you need to output it to a file, then you can use redirection in your command line. Just run the program like this:
python program.py > output.txt
Alternatively, you can use another nested with
statement and .writelines()
, like this:
lines = [] with open('test.csv') as csv: for row in csv.readlines(): cols = [s.replace('"', '') for s in row.split(',')] lines.append(f'{cols[0]} {cols[1]}n') with open('out.txt', 'w') as out: out.writelines(lines)