Different sources of file
Terry Reedy
tjreedy at udel.edu
Mon Mar 14 17:15:55 EDT 2016
On 3/14/2016 4:56 PM, Val Krem via Python-list wrote:
>
>
> Hi all,
>
>
>
> I am made a little progress on using python.
> I have five files to read from different sources and concatenate them to one file. From each file I want only to pick few column (x1, x2 and x3). However, these columns say x3 was a date in one file it was recorded as a character (2015/12/26) and in the other file it was records (20151226) and in the other file it was recorded as (26122015). How do I standardized these into one form (yyyymmdd-20151126). If there is no date then delete that record
>
> 2. The other variable x2. In one of the one files it was recorded as "M" and "F". In the other file x3 is 1 for male and 2 for female. So I want to change all to 1 or 2. if this variable is out of range M / F or 1 or 2 then delete that record
>
> 3. After doing all these I want combine all files into one and send it to output.
>
> Finally, do some statistics such as number of records read from each file. Distribution of sex and total number of records sent out to a file.
>
> Below is my attempt but not great
> #!/usr/bin/python
> import sys
> import csv
> from collections import Counter
>
> N=10
> count=0
> with open("file1") as f1:
> for line in f1:
> count+=1
> print("Total Number of records read", count)
> # I want to see the first few lines of the data
>
>
> file1Name x2 x3
> Alex1 F 2015/02/11
> Alex2 M 2012/01/27
> Alex3 F 2011/10/20
> Alex4 M .
> Alex5 N 2003/11/14
>
> file2
> Name x2 x3
> Bob1 1 2010-02-10
> Bob2 2 2001-01-07
> Bob3 1 2002-10-21
> Bob4 2 2004-11-17
> bob5 0 2009-11-19
>
> file2
> Name x2 x3
> Alexa1 0 12102013
> Alexa2 2 20012007
> Alexa3 1 11052002
> Alexa4 2 26112004
> Alexa5 2 15072009
Your examples are not comma separated values, rather column delimited
values, so csv module is not appropriate nor note needed. Assuming that
your examples do not mislead, slice out values by columns.
for line in file1:
name = line[0:5]
sex = line[7:8]
date = line[11:12]
<transform to your standard format>
<update stats>
outfile.write("{namespec} {sexspec} {datespec}\n"
.format(name, sex, date))
etc.
> Output to a file
> Name x2 x3
> Alex1 2 20150211
> Alex2 1 20120127
> Alex3 2 20111020
> Bob1 1 20100210
> Bob2 2 20010107
> Bob3 1 20021021
> Bob4 2 20041117
> Alexa2 2 20070120
> Alexa3 1 20020511
> Alexa4 2 20041126
> Alexa5 2 20090715
>
--
Terry Jan Reedy
More information about the Python-list
mailing list