python readlines()创建一个新列表

2024-04-25 17:16:08 发布

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

所以基本上我试图采取一个文件,并打破它取决于文本在文件中的位置。你知道吗

所以我有一个这样的方法

def sort_file(f):
    #print(f.read())
    mnemonics = []
    mnemonic_line = []
    next(f)#skip the default group on the first line
    for line in f.readlines():
        mnemonic_line.append(line[0:3])
        mnemonic_line.append(line[5:8])
        #print(line[5:8])
        #print(line[9:69])
        #print(line[69:139])
        #print(line[139:190])
        mnemonics.append(mnemonic_line)
        #del mnemonic_line[:]
        pdb.set_trace()
        #print(line.split())
        #print(len(line))

我试图创建一个列表列表,其中每一行是一个列表,而整个文件是一个行列表。你知道吗

所以我想我知道问题是什么,但我不知道如何解决它。据我所知,每次我通过并添加到列表中,我都会使用我的原始列表,每次都会增长。你知道吗

(Pdb) print mnemonics
[['CTM', 'ABS']]
(Pdb) c
(Pdb) print mnemonics
[['CTM', 'ABS', 'CTM', 'ACA'], ['CTM', 'ABS', 'CTM', 'ACA']]
(Pdb) c
(Pdb) print mnemonics
[['CTM', 'ABS', 'CTM', 'ACA', 'CTM', 'ACC'], ['CTM', 'ABS', 'CTM', 'ACA', 'CTM', 'ACC'], ['CTM', 'ABS', 'CTM', 'ACA', 'CTM', 'ACC']]

正如你所看到的,我的助记符行列表每次循环都会增长,并在位置1、2、3、4处重新加上它自己。。。当前循环的值。你知道吗

我想我需要做的是每次创建一个新的列表,并将它添加到我的列表列表中,这样我的输出看起来像这样

[['CTM', 'ABS'],['CTM', 'ACA'],['CTM', 'ACC']]

任何关于如何做到这一点的帮助都将不胜感激:)


Tags: 文件the方法文本列表lineabspdb
3条回答

只需将mnemonic_line = []移到for循环中:

def sort_file(f):
    #print(f.read())
    mnemonics = []
    next(f)#skip the default group on the first line
    for line in f.readlines():
        mnemonic_line = [] # <   
        mnemonic_line.append(line[0:3])
        mnemonic_line.append(line[5:8])
        mnemonics.append(mnemonic_line)
        pdb.set_trace()

mnemonic_line附加到循环中的mnemonics之后,不会清除(或重新初始化)mnemonic_line。这就是我的意思:

for line in f.readlines():
    mnemonic_line.append(line[0:3])
    mnemonic_line.append(line[5:8])
    mnemonics.append(mnemonic_line)
    mnemonic_line = []

看看你的代码。每次迭代都要将mnemonic_line附加到mnemonics,但没有清除mnemonic_line

看看这个,然后把它应用到你的代码中

>>> lol = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> a = [] # your mnemonics
>>> b = [] # your mnemonic_line
>>> for line in lol:
        b.append(line[:2])
        a.append(b)
>>> a
[[[1, 2], [4, 5], [7, 8]], [[1, 2], [4, 5], [7, 8]], [[1, 2], [4, 5], [7, 8]]]
>>> b
[[1, 2], [4, 5], [7, 8]]
>>> a = []
>>> b = []
>>> for line in lol:
        b = []
        b.append(line[:2])
        a.append(b)
>>> a
[[[1, 2]], [[4, 5]], [[7, 8]]]
>>> b
[[7, 8]]

相关问题 更多 >