Home > Software engineering >  From a file containing prime numbers to a list of integers on Python
From a file containing prime numbers to a list of integers on Python

Time:11-08

In order to work out some asymptotic behavior on the topic of twin prime conjecture, I am required to take a raw file(.csv or .txt) and convert that data into a list in python where I could reach by pointing its index number.

That is, I have a big(~10 million numbers) list of prime numbers in .csv file, lets say that this is that list:

2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83

I am and trying to produce the following

[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83]

in order to examine, ay the third element in the list, which is 5.

The approach I am taking is the following:

import sys
import csv

# The csv file might contain very huge fields, therefore increase the field_size_limit:

csv.field_size_limit(sys.maxsize)

with open('primes1.csv') as csvfile:
    reader = csv.reader(csvfile, delimiter=' ')

    output = []
    for i in reader:
        output.append(i)

Then, if printing,

for rows in output:
    print(rows)

I am getting

['2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83'].

How does one resolve this? Thank you very much.

CodePudding user response:

Maybe this:

with open("primes1.csv", "r") as f:
    lst = [int(i) for i in f.read().split(",")]

CodePudding user response:

You don't need to use the csv reader for that (like the other answer showed) but if you want to, you could do it like this, reading just the first row. Your code is iterating rows and adding them to the output list, but you need to iterate columns just in the first row. The next(reader) call returns just the first row.

with open('test.csv','r') as csvFile:
    reader = csv.reader(csvFile, delimiter=',')
    output = [int(i) for i in next(reader)]
    # alternate approach
    # output = [int(i) for i in csvFile.read().strip().split(',')]

print(output)
  • Related