title: Python - Convert negative decimals from string to float
body: <p>I need to read in a large number of .txt files, each of which contains a decimal (some are positive, some are negative), and append these into 2 arrays (genotypes and phenotypes). Subsequently, I wish to perform some mathematical operations on these arrays in scipy, however the negative ('-') symbol is causing problems.  Specifically, I cannot convert the arrays to float, because the '-' is being read as a string, causing the following error:</p>
  
  <pre><code>ValueError: could not convert string to float:
  </code></pre>
  
  <p>Here is my code as it's currently written: </p>
  
  <pre><code>import linecache
  
  gene_array=[]
  phen_array=[]
  
  for i in genotype:
  
     for j in phenotype:
  
        genotype='/path/g.txt'
        phenotype='/path/p.txt'
  
        g=linecache.getline(genotype,1)
        p=linecache.getline(phenotype,1)
  
        p=p.strip()
        g=g.strip()
  
        gene_array.append(g)
        phen_array.append(p)
  
    gene_array=map(float,gene_array)
    phen_array=map(float,phen_array)
  </code></pre>
  
  <p>I am fairly certain at this point that it is the negative sign that is causing the problem, but it is not clear to me why. Is my use of Linecache the problem here? Is there an alternative method that would be better? </p>
  
  <p>The result of </p>
  
  <pre><code>print gene_array
  </code></pre>
  
  <p>is</p>
  
  <pre><code>['-0.0448022516321286', '-0.0236187263814157', '-0.150505384829925', '-0.00338459268479522', '0.0142429109897682', '0.0286253352284279', '-0.0462358095345649', '0.0286232317578776', '-0.00747425206137217', '0.0231790239373428', '-0.00266935581919541', '0.00825077426011094', '0.0272744527203547', '0.0394829854063242', '0.0233109171715023', '0.165841084392078', '0.00259693465334536', '-0.0342590874424289', '0.0124600520095644', '0.0713627590092807', '-0.0189374898081401', '-0.00112750710611284', '-0.0161387333242288', '0.0227226505624106', '0.0382173405035751', '0.0455518646388402', '-0.0453048799717046', '0.0168570746329513']
  </code></pre>