繁体   English   中英

从包含素数的文件到 Python 上的整数列表

[英]From a file containing prime numbers to a list of integers on Python

为了计算出关于孪生素数猜想的一些渐近行为,我需要获取一个原始文件( .csv.txt )并将该数据转换为 python 中的一个列表,我可以通过指向它的索引号来访问该列表。

也就是说,我在.csv文件中有一个很大的(约 1000 万个数字)素数列表,可以说这是该列表:

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

我正在尝试制作以下内容

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

为了检查,列表中的第三个元素是 5。

我采取的方法如下:

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)

然后,如果打印,

for rows in output:
    print(rows)

我正进入(状态

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

如何解决这个问题? 非常感谢。

也许这个:

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

您不需要为此使用 csv 阅读器(如其他答案所示),但如果您愿意,您可以这样做,只阅读第一行。 您的代码正在迭代行并将它们添加到输出列表中,但您需要仅在第一行中迭代列。 next(reader)调用只返回第一行。

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM