0

我之前发布了一个关于在文件中组织信息的程序的问题: 有没有办法在 python 中按列表元素组织文件内容?

我现在正在尝试使用以下代码将信息写入新文件

def main():
    #open the file
    info = open('Studentinfo.txt', 'r')
    #make file content into a list
    allItems = []
    #loop to strip and split
    for i in info:
        data = i.rstrip('\n').split(',')
        allItems.append(data)

    allItems.sort(key=lambda x: x[3]) # sort by activity

    for data in allItems:
        first = data[1]
        last = data[0]
        house = data[2]
        activity = data[3]
        a = str(first)
        b = str(last)
        c = str(house)
        d = str(activity)
    f = open('activites.txt', 'w')
    f.write(a)
    f.write(b)
    f.write(c)
    f.write(d)
    f.close()

main()

但是,当我打开新的文本文件而不是

Amewolo, bob J.,E2,none
Andrade, Danny R.,E2,SOCCER
Banks-Audu, Rob A.,E2,FOOTBALL
Anderson, billy D.,E1,basketball
souza, Ian L.,E1,ECO CLUB
Garcia, Yellow,E1,NONE
Brads, Kev J.,N1,BAND
Glasper, Larry L.,N1,CHOIR
Dimijian, Annie A.,S2,SPEECH AND DEBATE

只有

 Amewolo, bob J.,E2,none

为什么python只写第一行

4

1 回答 1

5

您只是在 for 循环之后写入文件,而不是一次将每组数据写入一个。换句话说,您正在遍历所有数据,然后打开文件,写入最后 4 项,然后关闭它。

您需要打开文件,将所有内容写入其中,然后关闭。尝试这个

f = open('activites.txt', 'w') # open the file first
for data in allItems: # iterate over all of the data
    first = data[1]
    last = data[0]
    house = data[2]
    activity = data[3]
    a = str(first)
    b = str(last)
    c = str(house)
    d = str(activity)
    f.write(a) # write each element out
    f.write(b)
    f.write(c)
    f.write(d)
f.close() # then close

但是,str()调用是不必要的。 first, last, house, 并且activity已经是字符串。

结合with声明,整个事情可能会崩溃到

with open('activites.txt', 'w') as f:
    for data in allItems:
        data = [data[0], data[1]] + data[2:]
        print(*data, file=f, sep=', ')
于 2013-04-20T21:24:42.013 回答