Python从命令行读取文件并用非常大的文件剥离“\n\r”

2024-09-29 23:26:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我是第一次学习python,我刚刚了解到readlines()速度非常慢,而且占用内存。这是好的,但是当我为一个数据结构类编程时,我相信运行时是非常重要的。在

到目前为止,这就是我所掌握的有效方法。我还没有把'\r'脱光。在

def generateListOfPoints(stuff):
    List = open(stuff).readlines()

    a = []

    for i in range(len(List)):
        a.append(List[i].rstrip('\n').split(","))

    return a

这是我试图用for循环来做的(我听说这更好),但是我得到的只是错误,我不知道发生了什么。在

^{pr2}$

Tags: 方法内存in数据结构forlendef编程
3条回答

一定要给变量命名,这样它们才有意义。命名某物stuff很方便,但显然会导致错误。下面的示例将其重命名为filename,并修复了将line追加到列表而不是文件名的问题。在

另外,^{}函数需要一组字符来去除,因此您可以在一个函数调用中同时去除\r和{}。所以你可以:

def generateListOfPoints(filename):
    a = []
    with open(filename) as f:
        for line in f:
            a.append(line.rstrip('\r\n').split(","))
    return a

这将创建一个列表列表。如果您想在解决方案中展开内部列表,则需要使用extend instead of append。在

stuff替换为linestuff只是文件路径,实际内容在line中,该变量用于迭代生成器f

a.append(line.rstrip('\n').split(","))

您可能希望将在line上使用split后形成的列表存储为一个元组,这样a将是一个元组列表,其中每个元组对应于文件中的line。您可以使用:

^{pr2}$

我建议您尝试使用命令行解释器。这个 很容易学习rstring和split的工作原理。假设你 按照建议开始使用line变量,您可能没有 把你想要的东西加到a表上。您也可以同时删除\n 和\r对rstrip的一次调用。在

python
>>> a = []
>>> line = "this,is,a,test\n\r"
>>> line.rstrip('\n\r')
'this,is,a,test'
>>> line.rstrip('\n\r').split(',')
['this', 'is', 'a', 'test']
>>> a.append(line.rstrip('\n\r').split(','))
>>> a
[['this', 'is', 'a', 'test']]

相关问题 更多 >

    热门问题