Mohnish M
Mohnish M

Reputation: 123

Need help in extracting data from csv and writing to a text file

I have a csv with two columns of data. I want to extract data from one column and write to a text file with single-quote on each element and separated by a comma. For example, I have this..

taxable_entity_id,id
45efc167-9254-406c-b5a8-6aef91a73dd9,331999
5ae97680-f489-4182-9dcb-eb07a73fab15,103507
00018d93-ae71-4367-a0da-f252cea4dfa2,32991

I want all the taxable_entity_ids in a text file like this

'45efc167-9254-406c-b5a8-6aef91a73dd9','5ae97680-f489-4182-9dcb-eb07a73fab15','00018d93-ae71-4367-a0da-f252cea4dfa2'

without any space between two elements, separated by a comma.

Edit:

This is what i tried..

import csv


with open("Taxable_entity_those_who_filed_G1_M_July_but_not_in_Aug.csv", 'r') as csv_File:

    reader = csv.DictReader(csv_File)

    with open("te_id.csv", 'w') as text_file:
        writer = csv.writer(text_file, quotechar='\'', quoting=csv.QUOTE_MINIMAL)

        for row in reader:
            writer.writerow(row["taxable_entity_id"])
            # print(row["taxable_entity_id"])

    text_file.close()

csv_File.close()

and this is what I got..

4,5,e,f,c,1,6,7,-,9,2,5,4,-,4,0,6,c,-,b,5,a,8,-,6,a,e,f,9,1,a,7,3,d,d,9
5,a,e,9,7,6,8,0,-,f,4,8,9,-,4,1,8,2,-,9,d,c,b,-,e,b,0,7,a,7,3,f,a,b,1,5
0,0,0,1,8,d,9,3,-,a,e,7,1,-,4,3,6,7,-,a,0,d,a,-,f,2,5,2,c,e,a,4,d,f,a,2

Upvotes: 2

Views: 55

Answers (3)

martineau
martineau

Reputation: 123531

It's seems a little odd that you basically want a one row csv file for the taxable_entity_ids, but certain possible. You also don't need to explicitly close() the open files because the with context manager will do it for you automatically.

You also need to open the CSV file with newline='' as shown in all the examples in the csv module's documentation.

Lastly, if you want the all the fields to be quoted you need to use quoting=csv.QUOTE_ALL instead of quoting=csv.QUOTE_MINIMAL.

import csv


inp_filename = "Taxable_entity_those_who_filed_G1_M_July_but_not_in_Aug.csv"
outp_filename = "te_id.csv"

with open(outp_filename, 'w', newline='') as text_file, \
     open(inp_filename, 'r', newline='') as csv_File:

    reader = csv.DictReader(csv_File)
    writer = csv.writer(text_file, quotechar="'", quoting=csv.QUOTE_ALL)

    taxable_entity_ids = (row["taxable_entity_id"] for row in reader)
    writer.writerow(taxable_entity_ids)

print('done')

Upvotes: 0

Serge Ballesta
Serge Ballesta

Reputation: 149195

You were close. Simply as you want one single line in the output file, you should write it at once by using a comprehension:

import csv


with open("Taxable_entity_those_who_filed_G1_M_July_but_not_in_Aug.csv", 'r') as csv_File:

    reader = csv.DictReader(csv_File)

    with open("te_id.csv", 'w') as text_file:
        # use QUOTE_ALL to force the quoting
        writer = csv.writer(text_file, quotechar='\'', quoting=csv.QUOTE_ALL)

        writer.writerow((row["taxable_entity_id"] for row in reader))

And do not use close as you have (correctly) used with.

Upvotes: 2

Mario Khoury
Mario Khoury

Reputation: 392

try that

import pandas as pd
df = pd.read_csv('nameoffile.csv',delimiter = ',')
X = df[0].values
f = open('newfile.txt','w')
for i in X:
    f.write(X[i] + ',')
f.close()

Upvotes: 1

Related Questions