Posts: 37
Threads: 14
Joined: Aug 2019
HI,
I have a csv file with a single 'column'
Code
ABC
DEF
GHI
JKL
MNO
Is it possible to read and format this into a single string placing an ID before each row eg:
{1:ABC,2:DEF,3:GHI,4:JKL,5:MNO}
Thanks for any advice
Posts: 1,950
Threads: 8
Joined: Jun 2018
I just observe that {1:ABC,2:DEF,3:GHI,4:JKL,5:MNO} is not string.
I'm not 'in'-sane. Indeed, I am so far 'out' of sane that you appear a tiny blip on the distant coast of sanity. Bucky Katt, Get Fuzzy
Da Bishop: There's a dead bishop on the landing. I don't know who keeps bringing them in here. ....but society is to blame.
Posts: 7,324
Threads: 123
Joined: Sep 2016
(Oct-28-2019, 05:35 PM)fioranosnake Wrote: Is it possible to read and format this into a single string placing an ID before each row eg: Yes,you should show what you have tried.
Here is a big hint,and it look more like a dictionary than a string
>>> data = '''\
... ABC
... DEF
... GHI
... JKL
... MNO'''.split('\n')
>>> data
['ABC', 'DEF', 'GHI', 'JKL', 'MNO']
>>> dict(zip(list(range(1,6)), data))
{1: 'ABC', 2: 'DEF', 3: 'GHI', 4: 'JKL', 5: 'MNO'}
Posts: 4,801
Threads: 77
Joined: Jan 2018
There is also
>>> dict(enumerate(data, 1))
Posts: 37
Threads: 14
Joined: Aug 2019
(Oct-28-2019, 07:23 PM)Gribouillis Wrote: There is also
>>> dict(enumerate(data, 1))
Hi, Thanks for this response. This only appears to format the first row (headings)... can it skip this and perform the formatting on all other rows..?
Posts: 7,324
Threads: 123
Joined: Sep 2016
Oct-29-2019, 10:01 AM
(This post was last modified: Oct-29-2019, 10:01 AM by snippsat.)
Post a sample on how the raw csv file look like without edit.
We can only go from what on what you did show in first post.
fioranosnake Wrote:I have a csv file with a single 'column'
Code
ABC
DEF
GHI
JKL
MNO
Posts: 37
Threads: 14
Joined: Aug 2019
Hi,
If I open my txt file in notepad it looks as follows :
1231241231
1235135135
5457345345
4577865568
8654563848
and so on.
If I format the text file to look like :
1231241231,1235135135,5457345345,4577865568,8654563848
Then the solutions you have suggested work perfectly..
Do I need to carry out some formatting beforehand when the txt file is read?
Thanks again
Posts: 7,324
Threads: 123
Joined: Sep 2016
fioranosnake Wrote:Do I need to carry out some formatting beforehand when the txt file is read? No look straight forward if you file look like that.
from pprint import pprint
with open('numb.csv') as f:
#next(f) #If need to skip header
data = [i.strip() for i in f]
pprint(dict(enumerate(data, 1))) Output: {1: '1231241231',
2: '1235135135',
3: '5457345345',
4: '4577865568',
5: '8654563848'}
Posts: 37
Threads: 14
Joined: Aug 2019
Hi, I there a straight forward way to write the pprint output to a text file?
Thanks
Posts: 7,324
Threads: 123
Joined: Sep 2016
(Oct-29-2019, 09:29 PM)fioranosnake Wrote: Hi, I there a straight forward way to write the pprint output to a text file? with open('numb.csv') as f,open('out.csv', 'w') as f_out:
#next(f) # If need to skip header
data = [i.strip() for i in f]
data = dict(enumerate(data, 1))
for k,v in data.items():
f_out.write(f'{k}: {v}\n') Output: 1: 1231241231
2: 1235135135
3: 5457345345
4: 4577865568
5: 8654563848
|